我正在尝试设置几个单元测试,但我对此感到困惑。
这是我的服务班级:
@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/