TJWSEmbeddedJaxrsServer
ユニット/統合テスト内で、RESTEasy 組み込みサーバーを使用するか、テスト目的でリソース呼び出しPOJOResourceFactory
をシミュレートしようとしています。MockHttpRequest.get("/data")
私の問題は、サーバーまたはリソース ファクトリの使用に基づいて、リソース内に正常に注入される Spring Bean の null 以外のインスタンスを持つことができないことです。
明確にするためのコードを次に示します。事前に感謝します。
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();
}
単体テスト :
@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();
}
}