- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
背景
public Observable<List<Foo>> search(SearchView searchView) {
return RxSearchView.queryTextChanges(searchView)
.filter(charSequence -> !TextUtils.isEmpty(charSequence))
.throttleLast(100, TimeUnit.MILLISECONDS)
.debounce(200, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.flatMap(this::performSearch) //Search the DB
.onErrorResumeNext(this::doSomething);
}
我正在尝试使用 AndroidJUnit4
运行器和 Mocktio
测试上述方法。
@Test
public void testSearchCallsDataManager_WhenCalled() {
String input = "abc";
when(mockSearchView.getQuery()).thenReturn(input);
searchRequestManager.search(mockSearchView).subscribe(testSubscriber); //Using standard TestSubscriber
testSubscriber.assertNoErrors();
testSubscriber.assertNotCompleted();
verify(mockDataManager).getFoos(input);
}
问题
我尝试过使用 mockSearchView
和真正的 SearchView
。
mockSearchView = mock(SearchView.class);
searchView = new SearchView(InstrumentationRegistry.getContext(), null);
searchView = new SearchView(InstrumentationRegistry.getTargetContext(), null);
真实对象在测试运行时,在它们的实例化过程中会导致不同的异常。模拟对象在执行过程中似乎没有任何作用。
更新
为了清楚起见:理想情况下,如果我可以模拟 SearchView 会很棒,因为我想测试在发出某些东西之后会发生什么,并且使用正确的输入调用 performSearch 方法。
最佳答案
为了测试 RxBindings,我只是简单地使用 Espresso 并将 debounce
设置为 0(去抖时间作为公共(public)静态,在 espresso setUp()
方法中我将其设置为 0 )。那么就
onView(withId(yourId)).perform(ViewActions.replaceText(to something))
然后使用 throttleLast()
操作符验证你的 Mockito 或类似的东西。
干杯
关于android - 测试 RxBinding RxSearchView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38505951/
mSubscription = RxSearchView.queryTextChangeEvents(mSearchView) .subscribeOn(And
背景 public Observable> search(SearchView searchView) { return RxSearchView.queryTextChanges(searc
我已经将我的项目迁移到 androidx。当我使用 RxSearchView 时会导致错误 RxSearchView.queryTextChanges(searchView). 类型不匹配。必需的:a
我是一名优秀的程序员,十分优秀!