gpt4 book ai didi

android - 在 Dagger 2 中模拟注入(inject)的构造函数

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:44 25 4
gpt4 key购买 nike

我有一个具有依赖性的 Activity :

public class MyActivity extends AppCompatActivity {

@Inject Dependency;

@Override
protected void onCreate(Bundle savedInstanceState) {
// inject
}

}

public class Dependency {

@Inject
public Dependency() {
//..
}

}

由于 Dependency 有一个注入(inject)的构造函数,Dagger2 不需要模块来知道如何实例化它,这非常方便。

我的问题是:出于测试目的,我是否必须有一个提供 Dependency 的显式模块才能模拟它并提供 Dependency 的模拟版本>?或者有没有办法在没有它的情况下模拟 Dependency

最佳答案

我找到了一种无需创建显式模块的方法。以下是我使用 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));
}
}

关于android - 在 Dagger 2 中模拟注入(inject)的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33197342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com