gpt4 book ai didi

java - 使用 Java EE 注释通过 JUnit 进行 REST 服务测试

转载 作者:行者123 更新时间:2023-12-01 04:55:29 26 4
gpt4 key购买 nike

我使用在 GlassFish 和 Jersey 上运行的 Java EE 6。

如何使用一些自定义 header 和其他一些请求详细信息来模拟对此资源的请求?

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

}

当我使用这个关键字时,我也得到了 null 资源,而不是使用 new 关键字创建。

 @Inject Resources resources

最佳答案

我相信您可以使用 @InjectMocks 注释执行以下操作,它位于任何 JAXRS 上下文或 CDI 注入(inject)内容之外,它被视为常规 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
...
}
}

关于java - 使用 Java EE 注释通过 JUnit 进行 REST 服务测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14275585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com