1
我使用在GlassFish和Jersey上运行的Java EE 6。使用Java EE注释使用JUnit进行REST服务测试
如何使用一些自定义标题和其他一些请求细节来模拟对此资源的请求?
@Stateless
@Path("/user")
public class Resources {
@Contex
private HttpServletRequest request;
....
@GET
@Path("/settings")
@Produces("application/json")
@Consumes("text/plain")
public AccountSettings accountSettings() {
//check custom headers and request content do some stuff
return accountSettings;
}
....
}
,这是我的Java代码,但我得到res.accountSettings(),因为要求仍然是空空指针异常。
@Mock
HttpServletRequest request= Mockito.mock(HttpServletRequest.class);
@Test
public void testResources() {
when(request.getHeader(HTTP_AUTHORIZATION_HEADER)).thenReturn("Basic wedwd");
Resources res=new Resources();
AccountSettings response=res.accountSettings();
}
,而不是与新关键字创建,当我用这个话,我也得到了资源空。
@Inject Resources resources
“资源”和“请求”是如何连接的? –
@Anders R. Bystrup对于我无法连接它们的问题,我尝试将资源注入到测试类,而不是通过“新建”创建,但我仍然得到空值 – Spring
您完成了大部分工作。您现在只需要进行注入 - 即您的测试方法需要设置Resources类的请求属性。这模拟了实际的运行时行为。 Resources类没有为请求设置setter吗?如果是这样,只需在测试方法中调用它。 – EJK