我有以下代码:
setKeyboardTracking(False)
我用它:
public class DummyService {
// Create new DummyModel with default value,
// Set value read from config file
private static final DummyModel INSTANCE = new DummyModel(Play.application().configuration().getString('some-value'));
public static DummyModel get() {
return INSTANCE;
}
}
现在我正在尝试编写使用此DummyService的单元测试,但这很难,因为DummyModel静态实例是从某个配置文件创建的。
我试图创建具有依赖注入模式的单例,但我真的不知道我是否正确行事。 我创造了什么:
DummyService.get().someMethod();
我是否必须每次都创建新的DummyService并提供配置?
DummyModel还会单身吗?
我应该使用setter还是ctor注射?
我是否可以将默认值设置为config并创建没有参数的新CTOR:
@Singleton
public class DummyService {
private Configuration config;
private DummyModel dummy;
@Inject
public DummyService(Configuration config) {
this.configuration = config;
this.dummy = new DummyModel(config.getString('some-value'));
}
}
答案 0 :(得分:0)
有一个用于创建DummyModel的工厂类并将其作为构造函数参数注入。这样更容易测试,因为您可以轻松地模拟DummyModel进行单元测试。
public DummyService (DummyModel dummyModel) {
this.dummyModel = dummyModel;
}
在DummyModelFactory类中包含以下行,以便更清晰和明确。
this.dummy = new DummyModel(config.getString('some-value'));