この質問は、前の質問Specify Custom Application Contextからの続きです。
データ サービスの一部を、jersey-spring を使用する Jersey 1.x から jersey-spring3 を使用する Jersey 2.x に移行しています。
JerseyTest を継承するいくつかのテスト クラスがあります。これらのクラスの一部は、web.xml ファイルで指定されていないカスタム applicationContext.xml ファイルを使用します。
オブジェクトのモック化の目的で、Jersey リソースのいくつかのコンポーネントをモック化します。
Jersey 1.x では、アプリケーション コンテキスト ファイル内のオブジェクトを次のようにモックすることができました。
<bean id="mockBean" class="org.easymock.EasyMock"
factory-method="createStrictMock" autowire="byName">
<constructor-arg index="0" value="com.xxx.xxx.ClassToMock" />
</bean>
これらのモックされたインスタンスを次のように取得します
ClassToMock obj = (ClassToMock)ContextLoader
.getCurrentWebApplicationContext()
.getAutowireCapableBeanFactory()
.getBean("mockBean");
jersey-spring3を使用してJersey 2.xで同じことを達成するにはどうすればよいですか?
API ドキュメント、ユーザー ガイド、および一部のソースをくまなく調べましたが、答えが見つかりませんでした。
ありがとうございました。
編集:
JAX-RS リソース内でモック Bean を使用します。@Autowired
リソースに組み込まれているサービス インターフェイスがあります。
例えば
@Path(ProductResource.RESOURCE_PATH)
@Component
@Scope("prototype")
public class ProductResource
extends GenericResource<Product, BaseModel> {
/*
* Members
*/
public static final String RESOURCE_PATH = "product/";
@Autowired
protected ProductService productService;
...
のモックを作成し、これらのサービスに対する期待を設定します。
例えば
<bean id="productService" class="org.easymock.EasyMock"
factory-method="createStrictMock">
<constructor-arg index="0"
value="com.xxx.xxx.service.ProductService" />
</bean>