匕首2中的模拟注入构造函数

匕首2中的模拟注入构造函数,第1张

概述我有一个依赖项的活动:publicclassMyActivityextendsAppCompatActivity{@InjectDependency;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//inject}}publicclassDependency{@InjectpublicDependency

我有一个依赖项的活动:

public class MyActivity extends AppCompatActivity {    @Inject Dependency;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        // inject    } }public class Dependency {    @Inject    public Dependency() {        //..    } }

由于Dependency具有注入构造函数,因此Dagger2不需要模块知道如何实例化它,这非常方便.

我的问题是:为了进行测试,我是否必须具有一个提供依赖关系的显式模块,以便能够对其进行模拟并提供模拟的依赖关系版本?还是有没有办法模拟依赖关系?

解决方法:

我找到了一种无需创建显式模块的方法.这是我使用Robolectric和Mockito进行的 *** 作:

@RunWith(RobolectricGradleTestRunner.class)@Config(constants = BuildConfig.class, sdk = 21)public class MyActivityTest {    @Mock AppComponent mAppComponent;    @Mock private Dependency mDependency;    @Before    public voID setup() {        MockitoAnnotations.initMocks(this);        // ***        // use the mock AppComponent to perform injections        // ***        doAnswer(new Answer() {            public Object answer(InvocationOnMock invocation) {                ((MyActivity) invocation.getArguments()[0]).mDependecy = mDependecy;                return null;            }        }).when(mAppComponent).inject(any(MyActivity.class));    }}
总结

以上是内存溢出为你收集整理的匕首2中的模拟注入构造函数全部内容,希望文章能够帮你解决匕首2中的模拟注入构造函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1120458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存