- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目前正在使用 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());
}
(请不要介意对象的命名,随便取一些名字来反射(reflect)它需要做什么。)
我正在运行单元测试来测试相关的代码 fragment 。不过,这些 fragment 不包含 .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 调度器,所以这不是问题)
谢谢!
最佳答案
好的,所以。让我们从 .compose
方法开始。它的作用 - 将一些转换器函数应用于您的 Observable,您可以将其理解为 “组合可观察方法的自定义序列(如 map
、flatMap
等)” 。 IE。您可以使用它来组合 .subscribeOn
和 .observeOn
方法 ( more here )。因为你使用的是 RxLifecycle,你可以去源代码看看,what it does .
如果你想在测试中使用 Activity 的生命周期,你必须使用Robolectric .它会让您完全控制创建 Activity 和管理它的生命周期。 这将有助于 NPE。您只需设置它并编写:
ActivityController controller = Robolectric.buildActivity(BaseActivity.class).create().start().resume();
Activity activity = controller.get();
// Not paused yet
activityController.pause();
// Pause happened! Do something!
希望对你有帮助(:
关于java - 在单元测试中模拟 RxJava 的 Activity 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40000251/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!