但是對於bar示例spring並不推斷從通用mock()方法返回的bean的類型。但實際上它與MockFactoryBean案例中的情況完全相同,這是行得通的。
class MockFactoryBean<T> implements FactoryBean<T> {
private Class<T> type;
public void setType(final Class<T> type) {
this.type = type;
}
@Override
public T getObject() throws Exception {
return (T) Mockito.mock(type);
}
@Override
public Class<T> getObjectType() {
return type;
}
@Override
public boolean isSingleton() {
return true;
}
}
使用
org.mockito.Mockito
和
mock()
工廠方法不起作用
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.example.SomeType" />
</bean>
和一個
加
<bean id="mockFactory" name="someType" class="com.example.MocksFactory" >
<property name="type" value="com.example.SomeType" />
</bean>
,但得到類型[com.example.SomeType]中沒有匹配豆..當自動裝配時。
@Autowired public SomeType someType;
這是爲什麼?
<bean id="mockFactory1" name="metadataExtractor" class="tests.base.MocksFactory" >
<property name="type" value="processing.MetadataExtractor" />
</bean>
<bean id="mockFactory2" name="fileValidator" class="tests.base.MocksFactory" >
<property name="type" value="validation.file.FileValidator" />
</bean>
<bean id="mockFactory3" name="documentMatcher" class="tests.base.MocksFactory" >
<property name="type" value="validation.matching.DocumentMatcher" />
</bean>
<bean id="mockFactory4" name="uploadMatcher" class="tests.base.MocksFactory">
<property name="type" value="validation.matching.UploadMatcher" />
</bean>
<bean id="mockFactory5" name="tempFileLocalService" class="tests.base.MocksFactory">
<property name="type" value="service.TempFileLocalService" />
</bean>
<bean id="mockFactory6" name="orderLocalService" class="tests.base.MocksFactory">
<property name="type" value="service.OrderLocalService" />
</bean>
<bean id="mockFactory7" name="counterLocalService" class="tests.base.MocksFactory">
<property name="type" value="service.CounterLocalService" />
</bean>
因爲沒有ID &名不推斷類型:
與MockFactoryBean的方式,因爲如果你有嘲笑許多豆子,你落得像這是相當不方便。
[這](HTTP ://stackoverflow.com/a/12352317/448078)例子對我來說很酷。 –