Robolectric Test not calling textWatcher.onTextChanged



>我有以下可观察的

Observable<OnTextChangeEvent> subjectObservable = WidgetObservable.text(mComposeSubject);

然后哪个做

subjectObservable.subscribe(s -> onTextChange(mComposeSubject, getString(R.string.blank_warning, mComposeSubject.getHint().toString())));

我还有以下机器人测试

@Test
public void testOnTextChange_subjectChanged() {
    EmailActivity activity = spy(getActivity());
    activity.mComposeSubject.setText("test");
    assertThat(activity.mSubjectSubscription).isNotNull();
    verify(activity, times(1)).onTextChange(eq(activity.mComposeSubject), anyString());
}

此操作失败,并显示"需要但未调用"错误。 有没有人知道为什么会这样? 据我所知,这使用一个简单的文本观察器,所以它应该可以工作吗?

对于任何好奇的人,我最终将订阅者移动到另一个类,然后使用 Observable.just("Test") 在订阅时触发该方法并验证它是否被调用。

我有一个类似的问题,在我的情况下,Robolectric测试没有调用TextWatcher.afterTextChanged

这是我找到的解决方案

EditText nameText = (EditText) mParentView.findViewById(R.id.edit_name);
nameText.setText(accountName);
Shadows.shadowOf(nameText).getWatchers().get(0).afterTextChanged(null);

更改文本后,我使用 ShadowTextView.getWatchers 获取观察者,然后手动调用 afterTextChanged 方法(或者在您的情况下onTextChange

相关内容

  • 没有找到相关文章

最新更新