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

时间:2017-11-07 21:48:08

标签: 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设置的精简版本。

1 个答案:

答案 0 :(得分:4)

我最终解决了它,只是没有用TestAppModule注释@Module。这实现了部分嘲弄。

public class TestAppModule extends AppModule {

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