【发布时间】:2017-07-25 14:11:11
【问题描述】:
我想测试一下这个方法:
void updateAvailableScreens() {
safieCam.availableCameras()
.flatMap(this::getAvailableScreensForCameras)
// causing failure .observeOn(schedulers.mainThread())
.subscribe(
screens -> {
view.setAvailablePagesOnViewPager(screens);
view.setAvailablePagesOnBottomSheet(screens);
},
Timber::e
);
}
通过这个测试(所以给出已知数据,我希望使用预期的枚举列表调用视图):
@Test
public void widgetsShouldGetAllScreens() {
when(camera.availableCameras()).thenReturn(
Observable.just(Arrays.asList(
SafieCam.CameraType.SELFIE,
SafieCam.CameraType.REAR)));
testedVPPresenter.updateAvailableScreens();
List<ViewPagerView.Pages> pages = Arrays.asList(
ViewPagerView.Pages.SELFIE,
ViewPagerView.Pages.REAR_CAMERA,
ViewPagerView.Pages.LOGIN);
verify(view).setAvailablePagesOnViewPager(pages);
verify(view).setAvailablePagesOnBottomSheet(pages);
}
但是当observeOn未注释时,由于与view的交互为零,测试将失败,否则它将成功。
需要的信息:
schedulers 是接口包装器,所有调用的调度程序都在使用 TestScheduler 进行测试时模拟。
问题:我在这里做错了吗?如果是这样,什么是正确的方法?
【问题讨论】:
标签: android unit-testing rx-java2