Как протестировать WKWebView с помощью RxWebKit?

Я пытаюсь написать несколько тестов для своего приложения, которое использует rxSwift. В частности, я хотел бы протестировать, написать модульные тесты, веб-просмотр. Я использую RxWebKit для получения наблюдаемых над некоторыми свойствами, такими как navigationCompleted или NavigationFailed и т. Д. Например:webView.rx.didFailNavigation.asDriver(). Эти наблюдаемые вводятся в мою модель представления. Но я не уверен, как написать эти тесты, чтобы моделировать, например, неудачную навигацию и, следовательно, выброс такого рода наблюдаемых. В конкретном случае я хочу смоделироватьDriver<(webView: WKWebView, navigation: WKNavigation, error: Error)> (это тот же тип, что и связанный с webView.rx.didFailNavigation.asDriver()). Я понял, что для имитации выброса мне нужно создать планировщик и вызватьcreateHotObservable метод, но что я должен передать Recorderd.next(150, element)как элемент в конкретном случае для имитации отказа веб-просмотра? может кто-нибудь привести мне простой пример?

1 ответ

Это слишком общий вопрос, поэтому я дам более общий ответ:

Вам нужно изучить тестирование с помощью RxSwift, используя:

  1. RxTest: https://github.com/ReactiveX/RxSwift/blob/master/Documentation/UnitTests.md

например:

func testElementsEmitted() {
    let scheduler = TestScheduler(initialClock: 0)

    let xs = scheduler.createHotObservable([
        .next(210, "RxSwift"),
        .next(220, "is"),
        .next(230, "pretty"),
        .next(240, "awesome")
    ])

    let res = scheduler.start { xs.asObservable() }

    XCTAssertRecordedElements(res.events, ["RxSwift", "is", "pretty", "awesome"])
}
  1. или вы можете использовать RxBlocking: https://github.com/ReactiveX/RxSwift/tree/master/RxBlocking

Например, вот хороший момент для начала:

http://rx-marin.com/post/rxblocking-part1/

Другие вопросы по тегам