模拟注入了ViewModel

时间:2017-07-18 12:35:20

标签: android mockito android-espresso dagger-2

我需要在StarterActivity上运行Android检测测试。这是怎么回事

public class StarterActivity extends BaseActivity<ActivityStarterBinding> {

    @Inject
    protected StarterViewModel starterViewModel;

    @Override
    public int getContentView() {
        return R.layout.activity_starter;
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getApplicationComponent().inject(this);
    }
    //...
}

我在onStart中调用了starterViewModel方法。

StarterViewModel通过构造函数注入:

public class StarterViewModel {

    private final AuthDataModel authDataModel;

    @Inject
    public StarterViewModel(AuthDataModel authDataModel) {
        this.authDataModel = authDataModel;
    }

    @NonNull
    public Single<Boolean> isUserLoggedIn() {
        return authDataModel.isUserLoggedIn();
    }
}

我发现这个非常好的方法Android testing using Dagger 2, Mockito and a custom JUnit rule。但它需要我添加@Provide方法。应用程序组件将成为“上帝组件”,依赖于一堆模块(或一个“上帝模块”)。

如何在不添加@Provide方法并在测试中覆盖它的情况下在Espresso测试中进行模拟?

0 个答案:

没有答案