android - 迁移到 Dagger 2.12 并测试模块覆盖

标签 android dagger-2 dagger

我正在从 Dagger 2.0.2 迁移到 Dagger 2.12 并计划使用 dagger.android API。

我的问题是关于迁移测试代码。目前,我有一个 AppModule 和一个 TestAppModule 扩展它并使用 @Override 注释覆盖一些依赖项。这是一个例子:

@Module
public class TestAppModule extends AppModule {

    @Override
    public UserDao provideUserDao() {
        return mock(UserDao.class);
    }
}

现在使用 Dagger 2.12,如果我尝试覆盖 TestAppModule,抛出错误:error: @Provides methods may not be overridden in modules.

TestModule覆盖和模拟某些依赖项,同时利用 AppModule 中定义的其余依赖项的推荐方法是什么原样?

如果人们认为有必要,我可以发布我的 Dagger 设置的精简版本。

最佳答案

我最终通过简单地不使用 @Module 注释 TestAppModule 来解决它。这样就实现了部分mocking。

public class TestAppModule extends AppModule {

    @Override
    public UserDao provideUserDao() {
        return mock(UserDao.class);
    }
}

关于android - 迁移到 Dagger 2.12 并测试模块覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47168004/

相关文章:

android - 构造函数 vs 字段 vs 方法注入(inject) Dagger 2

java - Dagger 2 麻烦@Inject-ing FirebaseMessagingService

logging - Dagger:注入(inject)名为Logger?

java - 如何使用 Dagger 重新注入(inject)特定对象

android - 在 Play 商店中找不到我的 Android 应用

Android Complex list of items in scrollview 最佳实践

android - 使用哪种 mime 类型,在 Gmail 中附加 ".zip"文件

android - DispatchingActivityInjector 返回 null

java - Android:Dagger 2 和构造函数注入(inject)

android - 由 : java. util.NoSuchElementException 引起