Утверждать, что код запускается в какой-то момент в модульном тесте? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть этот юнит-тест:

func testState() {
    searchController.filter.query = "Missouri"
    searchController.resultsSignal.subscribePast(with: self) { sections in

        if sections.count < 1 { return }
        // Want to test that code at least gets to here at some point
        ...
    }
}

И я хочу убедиться, что в какой-то момент я, по крайней мере, пройду линию if sections.count < 1 { return }.

Поскольку он запускается при срабатывании сигнала, мне все равно, есть ли другой сигнал, который срабатывает в какой-то момент, но я хочу убедиться, что section.count> 0 в какой-то момент в тест.

Есть ли способ сделать это? Я думал о том, чтобы использовать логическое значение и инициализировать его как false, затем установить его в true, если sections.count когда-либо было больше единицы, и утверждать, что значение было истинным, но это не сработает, если я не задержусь, так как использую сигналы. Благодаря.

1 Ответ

1 голос
/ 23 апреля 2019

Вы можете использовать XCTestExpectation и вызывать .fulfill после sections.count, чтобы уведомить тест об успешном выполнении асинхронного теста.

func testState() {
    let expectation = XCTestExpectation(description: "Should execute")
    searchController.filter.query = "Missouri"
    searchController.resultsSignal.subscribePast(with: self) { sections in

        if sections.count < 1 { return }
        // Want to test that code at least gets to here at some point
        expectation.fulfill()
        ...
    }
    wait(for: [expectation], timeout: 10) // Will fail if .fulfill does not get called within ten seconds
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...