1

GlassFish と Jersey で Java EE 6 を使用しています。

カスタム ヘッダーやその他のリクエストの詳細を使用して、このリソースへのリクエストをモックするにはどうすればよいですか?

@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 コードですが、リクエストがまだ null であるため、res.accountSettings() で null ポインター例外が発生します。

@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();

}

newキーワードで作成する代わりに、これを使用すると、リソースも null になります。

 @Inject Resources resources
4

1 に答える 1

0

@InjectMocks アノテーションを使用して次のようにできると思います。JAXRS コンテキストまたは CDI インジェクションの外側で、通常の Java クラスとして扱われます。

@RunWith(MockitoJUnitRunner.class)
public class ResourcesTest {

    @Mock HttpServletRequest request;

    @InjectMocks Resources res;

    @Test
    public void testResources() {
        // given
        when(request.getHeader(HTTP_AUTHORIZATION_HEADER)).thenReturn("Basic wedwd");

        // when
        AccountSettings response = res.accountSettings();

        // then
        ...
    }
}
于 2013-01-11T21:45:55.910 に答える