【发布时间】:2017-02-21 08:28:08
【问题描述】:
目前正在使用 RxJava 开发一个 Android 应用程序。
我得到以下代码:
public Observable<Response<DTO>> getDTO(final BaseActivity activity, final long workorderId) {
return dtoService.getDTO(DTOId)
.subscribeOn(Schedulers.io())
.compose(activity.bindUntilEvent(ActivityEvent.PAUSE))
.observeOn(AndroidSchedulers.mainThread());
}
(请不要介意对象的命名,随便放一些名称以反映它需要做什么。)
我已经运行单元测试来测试相关的代码片段。尽管如此,这些部分不包含.compose() 方法。
现在我尝试了以下方法:
@Mock
private BaseActivity baseActivity;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
和
private BaseActivity baseActivity;
@Before
public void setup() {
baseActivity = Mock(BaseActivity.class);
}
这两种情况都给了我一个空指针:lifecycle == null(如果我调试它就是这样)。
我如何以任何其他方式模拟或测试它? (我也不完全理解 compose() 方法。但我似乎找不到与此代码相关的任何资源)
(我提供了 Android 和 RxJava 调度程序,所以这不是问题)
谢谢!
【问题讨论】:
-
您是否考虑过监视实际活动?如果您正在进行单元测试活动,我也会建议使用 robolectric。单元测试本身并不是为此而设计的。
-
我对这个示例项目进行了不同类型的单元测试,希望对您有所帮助:github.com/mmirhoseini/fyber_mobile_offers
-
但我不想测试我的活动。我只想知道该方法是否返回一个带有正确 DTO 响应的 observable。这就是为什么我要模拟这个活动,因为它与此无关。或者我只是不明白 compose() 方法?
标签: java android unit-testing rx-java