Prueba de RxBinding RxSearchView
Fondo
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); }
Estoy tratando de probar el método anterior utilizando el corredor de Mocktio
y Mocktio
.
- Realm, RxJava, asObservable () y doOnUnsubscribe ()
- Android: Sondeo de un servidor con Retrofit
- La comprensión incorrecta del búfer en RxJava
- ¿Por qué RxJava con Retrofit en Android doOnError () no funciona, pero el suscriptor onError no
- Usando observeOn () el hilo de interfaz de usuario de Android bloquea mi prueba de emulador
@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); }
El problema
He intentado usar un mockSearchView
y un mockSearchView
verdadero.
mockSearchView = mock(SearchView.class); searchView = new SearchView(InstrumentationRegistry.getContext(), null); searchView = new SearchView(InstrumentationRegistry.getTargetContext(), null);
Los objetos reales resultan en diferentes excepciones cuando se ejecuta la prueba, durante su instanciación. El objeto simulador parece no tener ningún efecto durante la ejecución.
Actualizar
Para mayor claridad: Idealmente sería estupendo si pudiera burlar el SearchView como quiero probar lo que sucede DESPUÉS de que algo se emita y que el método performSearch se llame con las entradas correctas.
- InterruptedIOException al cambiar de mainThread () a io ()
- RxJava: ¿Cómo reanudar el trabajo de un observable si se produce un cambio de configuración?
- Cómo manejar diferentes tipos de errores en Retrofit Rx onError sin instancia fea
- Cómo crear un observable de OnClick evento Android?
- RxJava / RxAndroid - maneja varios cambios de EditText
- RxJava file.createNewFile () devuelve siempre TRUE
- Evento de RxJava de incendio sólo cambia cuando Fragmento es visible en ViewPager
- InterruptedIOException al usar Retrofit2 con rx cuando retryOn
Para probar RxBindings simplemente utilicé Espresso y establecí a debounce
a 0 (debounce time como public static, y en espresso setUp()
lo establecí hasta 0). Entonces solo
onView(withId(yourId)).perform(ViewActions.replaceText(to something))
Y acaba de verificar su Mockito o lo que sea similar con throttleLast()
operador throttleLast()
.
Aclamaciones
- ListView: deshabilitar el clic / enfoque
- Cadena Spannable con imagen que no funciona con la notificación push