我试图进行一些测试,我需要通过在KODEIN上覆盖它来替换真实的依赖,但它不起作用,我不知道我能做什么了。
这是我的依赖图(我省略了其他依赖项):
public File shooterUIFile = new File("./src/com/xyfurion/hudedit/bin/resources/ShooterUI.ini");
public ArrayList<String> shooterUIRead = new ArrayList<>();
public ArrayList<String> shooterUIWrote = new ArrayList<>();
public void readHUDFile(){
try {
FileReader fileReader = new FileReader(shooterUIFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while (bufferedReader.readLine() != null)
shooterUIRead.add(bufferedReader.readLine());
for (int i = 0; i < shooterUIRead.size(); i++)
System.out.println(shooterUIRead.get(i));
bufferedReader.close();
}
catch(FileNotFoundException ex) {
System.out.println("Unable to open file '" + shooterUIFile + "'");
ex.printStackTrace();
}
catch(IOException ex) {
System.out.println("Error reading file '" + shooterUIFile + "'");
ex.printStackTrace();
}
}
这是我的应用程序类:
class Injector(private val context: Context) {
val dependencies = Kodein.lazy {
.
.
bind<RetrieveContacts>() with provider {
Log.i("RetrieveContacts","REAL")
RetrieveContactsInMemory()
}
.
.
}
}
我正在做的事情是覆盖依赖:
class AppApplication : Application(), KodeinAware {
override val kodein by Injector(this).dependencies
}
我仍然看到&#34; RetrieveContacts REAL&#34;而不是&#34; RetrieveContacts FAKE&#34;在控制台日志中
答案 0 :(得分:1)
在测试中延伸时似乎忘记了允许覆盖。
extend(appApplication.appKodein(), allowOverride = true)
答案 1 :(得分:0)
这不起作用,因为父定义不会被覆盖。更多信息:https://kodein.org/Kodein-DI/?6.1/core#_overridden_access_from_parent
<块引用>这是因为 Bar 绑定到单例,第一次访问会 定义使用的容器(父或子)。如果单身人士是 由孩子初始化,然后来自父母的后续访问将 yeild 一个引用 Foo2 的 Bar,它不应该存在于 父母。