当我使用 Jersey 测试框架测试我的休息服务时,是否有可能以某种方式在我的测试类中重用 Jackson ObjectMapper 引用。
我在我的测试类扩展的抽象类中注册了 JacksonFeature。
public abstract class AbstractRestIntegrationTest extends JerseyTest {
@Override
protected Application configure() {
ResourceConfig resourceConfig = new ResourceConfig(getResourceClass());
resourceConfig.register(JacksonFeature.class);
resourceConfig.register(MultiPartFeature.class);
return resourceConfig;
}
}
编辑
在我的测试类中,我调用了其余服务,它返回给我 json。然后我想通过jackson解析这个json并检查它是否包含对象。我的问题是,当我注册 JacksonFeature 时,是否可以在 Jersey 的测试方法中重用该 ObjectMapper。
public class ManagedElementIntegrationTest extends AbstractRestIntegrationTest {
@Override
protected Class<?> getResourceClass() {
return ManagedElementRestService.class;
}
@Test
public void testGetManagedElementById() throws IOException {
IManagedElementService managedElementService = getBeanOfClass(IManagedElementService.class);
ManagedElement me = prepareManagedElementObject();
try {
when(managedElementService.getUpdatedApplication(anyString())).thenReturn(me);
} catch (ManagedElementNotFoundException e) {
fail("Exception not expected: " + e);
}
String response = target("me/app").request().accept(MediaType.APPLICATION_JSON).get(String.class);
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree(response);
assertNotNull(actualObj);
assertNotNull(actualObj.get("mapPosition"));
assertNull(actualObj.get("alarms"));
// code continues below.
}
}