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