Как работает метод triggerActions TestScheduler? - PullRequest
0 голосов
/ 09 января 2020

Как работает метод triggerActions TestScheduler?

Я провожу некоторые тесты с triggerAction, чтобы посмотреть, как он работает, насколько я понимаю, он не ускоряет время, а устанавливает триггерные события.

У меня есть первые 2 тестовых экземпляра, один из которых проходит с blockingGet

@Test
fun `Passed test`() {

    val actual = Single.just<String>("EXPECTED")
        .delay(5, TimeUnit.SECONDS)
        .doOnError {
            println("doOnError() ${it.message}")
        }
        .doOnSuccess {
            println("doOnSuccess() $it")
        }
        .blockingGet()

    assertEquals(actual, "EXPECTED")

}

Приведенный выше тест проходит и печатает doOnSuccess () EXPECTED

 @Test
    fun `Failed test`() {

        val testScheduler = TestScheduler()

        val testObserver: TestObserver<String> = Single.just<String>("EXPECTED")
            .delay(5, TimeUnit.SECONDS, testScheduler)
            .doOnError {
                println("doOnError() ${it.message}")
            }
            .doOnSuccess {
                println("doOnSuccess() $it")
            }
            .test()


        testScheduler.triggerActions()

        testObserver.assertValue("EXPECTED")

    }

Этот сбой, почему?

Тем не менее, этот метод проходит только если вызывается triggerActions

@Test
fun `Passed test2`() {

    val testScheduler = TestScheduler()

    val observer = Single.error<Int>(RuntimeException())
        .delay(5, TimeUnit.SECONDS, testScheduler)
        .test()


    // Fails without this
    testScheduler.triggerActions()

    observer.assertError(RuntimeException::class.java)

}
...