我有一个单例Spring bean,它创建了原型bean;这些是从
javax.inject.Provider
字段:
@Component
public class MySingleton {
@Autowired
private javax.inject.Provider<MyPrototype> prototypeFactory;
public void doStuff() {
MyPrototype bean = prototypeFactory.get();
bean.invoke();
}
}
@Component
@Scope("prototype")
public class MyPrototype {
public void invoke() {}
}
现在,我想为Singleton创建一个JUnit测试:
@Mock
MyPrototype prototype;
@InjectMocks
MySingleton sut;
@Test
public void testPrototype() {
sut.doStuff();
verify(prototype, times(1)).invoke();
}
但可以理解的是,这并没有正确地设置单身者的
Provider
.
有什么办法吗?我希望避免创建创建原型实例的单例工厂bean。
或者,使用
@Lookup