此問題是上一個問題Specify Custom Application Context的後續操作。使用jersey-spring3從JerseyTest容器中檢索托管bean
我們正在使用jersey-spring3將澤西島2.x的一些數據服務從Jersey 1.x遷移到Jersey 2.x。
我們有幾個從JerseyTest繼承的測試類。其中一些類使用未在web.xml文件中指定的自定義applicationContext.xml文件。
出於對象嘲諷的目的,我們會模擬出澤西島資源中的一些組件。
在新澤西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");
如何同與澤西2實現檢索這些嘲笑實例。 x使用jersey-spring3?
我已經梳理了API docs,user guides和一些sources,但無法找到答案。
謝謝。
編輯:
我們將使用我們的JAX-RS資源內的嘲笑豆。我們的服務接口是@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>
你能舉個例子嗎? (你如何/何時/你在哪裏使用mocked bean?它是否在JAX-RS資源內?)你確實需要'WebApplicationContext'還是任何'ApplicationContext'就足夠了? –
「WebApplicationContext」或「ApplicationContext」都可以。哪一個會給我們一個指向注入JAX-RS資源的bean的指針。 –