В рамках теста Unit/Integration я пытаюсь использовать встроенный сервер RESTEasy TJWSEmbeddedJaxrsServer
или POJOResourceFactory
inorder, чтобы имитировать вызов MockHttpRequest.get("/data")
ресурса для целей тестирования. Моя проблема заключается в том, что на основе использования сервера или фабрики ресурсов я не могу иметь ненулевой экземпляр весенних бобов, которые обычно вводятся в мои ресурсы.Inject Spring bean в RESTEasy Ресурс во время тестирования
Вот код для уточнения, спасибо заранее.
контекст Spring приложения:
<context:annotation-config />
<context:component-scan base-package="com.cdcfast.service" />
<bean id="simpleResource" class="com.cdcfast.rest.SimpleResource" />
SimpleResource.java:
@Component
@Path("/data")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class SimpleResource {
@Autowired
private SimpleService service;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Data> getData() {
return MockDataBase.getInstance().getRows();
}
Test Unit:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:/test/spring/testApplicationContext.xml" })
public class FakeTest {
private Dispatcher dispatcher;
@Before
public void before() {
dispatcher = MockDispatcherFactory.createDispatcher();
POJOResourceFactory noDefaults = new POJOResourceFactory(SimpleResource.class);
dispatcher.getRegistry().addResourceFactory(noDefaults);
}
@Test
public void aTestThatAlwaysPass() throws URISyntaxException {
MockHttpRequest request = MockHttpRequest.get("/data");
MockHttpResponse response = new MockHttpResponse();
dispatcher.invoke(request, response);
Assertions.assertThat(response.getStatus()).isEqualTo(HttpServletResponse.SC_OK);
Assertions.assertThat(response.getContentAsString()).isNotNull().isNotEmpty();
}
}