我正在尝试设置几个单元测试,但我对此感到困惑。
这是我的服务班级:

@Component
@Scope("request")
@Path("/subscriber/{accNo}/case/")
public class ServiceRest {
        @Context
        private UriInfo uriInfo;
        @Autowired
        private ActivationCase actCase;

        @POST
        @Path("activation")
        public Response activate(@PathParam("accNo") String accNo, InputStream jSonInput) {

               Integer order = actCase.activateMethod(accNo);
               Link link = new Link("order", uriInfo.getBaseUriBuilder().path(OrderRest.class).path("" + order).build().toString(), "GET");
        }
}


这是我的测试班:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/myapp-context.xml" })
@WebAppConfiguration
@Ignore
public class ServiceRestTest{
    @Autowired
    private ServiceRest restClient;
    @Autowired
    protected OrderServiceImpl orderService;


    @Test()
    public void testActivationCaseOK() {
        UriInfo uriInfo = Mockito.mock(UriInfo.class);
        UriBuilder uriBuilder = Mockito.mock(UriBuilder.class);
        Mockito.when(uriInfo.getBaseUriBuilder()).thenReturn(uriBuilder);
        Mockito.when(orderService.readThings(Mockito.any(Acct.class))).
                       thenReturn(stuff);

        Mockito.when(orderService.maintainPlan(Mockito.any(Order.class))).
                       thenReturn(stuff2);
        Response response = restClient.activateMethod("111111114");
}


谁能解释我为什么uriInfo为NULL?
模拟完成后,应该返回我的URIBuilder吗?

谢谢你的帮助

最佳答案

不幸的是,没有任何建议对我有用:/
我必须解决。

因此,为了完成这项工作,我将@Context私有UriInfo uriInfo移为每个方法中的参数。

 public Response activate(@PathParam("accNo") String accNo, InputStream jSonInput, @Context UriInfo) {


在我的单元测试中:

    Mockito.when(uriInfo.getBaseUriBuilder()).thenReturn(uriBuilder);
    Mockito.when(uriBuilder.path(Mockito.anyString())).thenReturn(uriBuilder);
    Mockito.when(uriBuilder.build()).thenReturn(uri);
    Response response = restClient.activateMethod("111111114", uriInfo);


感谢您的反馈意见。我希望这可以在将来对某人有所帮助

关于java - 模拟UriInfo无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40004705/

10-12 06:16