Я использую библиотеку Mosby для реализации шаблона MVP вместе с Retrofit и RxJava для моих вызовов API почти точно так же, как это делается здесь.
Я только начал с пользовательского интерфейса и модульного тестирования, и хотя у меня не было проблем с имитацией моего API во время тестирования пользовательского интерфейса (с MockWebServer), я не могу понять, как имитировать мой API для модульного тестирования.
Я просмотрел ответ здесь, но похоже, что он все еще пытается сделать настоящий вызов API, так как я вижу, что он приземляется onError (сетевое исключение) вместо onNext/onComplete. Если я использую MockWebServer, он также попадет в onError, но не в тип сети.
Что я хочу: когда ведущий делает вызов API:
signUpSubscriber = api.signUpUser(credentials)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<User>()
На самом деле не делать вызов, а скорее иметь возможность передать ему объект «Пользователь», который он должен вернуть, чтобы тест мог перейти к onNext и onComplete.
api.signUpUser(credentials)
в тесте пользовательского интерфейса прямо сейчас? - person sockeqwe   schedule 29.03.2017MockWebServer
, но вы должны убедиться, что API подключается к MockWebServer (измените базовый URL-адрес чтобы указать на ваш фиктивный сервер). - person sockeqwe   schedule 30.03.2017Observable.error(customError)
. Нет причин для этого теста устанавливать всю сетевую абстракцию внизу. - person Than   schedule 30.03.2017when(mApi.signUpUser(<whatever criteria you want>)).thenReturn(Observable.just(<whatever user object you need in your test>))
? - person Fred   schedule 04.04.2017