Как проверить контроллер представления с файлом XIB, используя Quick? - PullRequest
0 голосов
/ 11 декабря 2018

Я использую Быструю библиотеку для модульного тестирования.

Я пытаюсь протестировать ViewController, вид которого сделан как XIB.

Я связал вид с файломвладелец и компонент просмотра с контроллером представления.

И для теста viewDidLoad я получил доступ к представлению для запуска viewDidLoad().

Вот мой код.

override func spec() {
    super.spec()

    var sut: QuestionViewController!

    describe("viewDidLoad") {
        afterEach {
            sut = nil
        }
        beforeEach {
            sut = QuestionViewController(question: "Q1")
            _ = sut.view
        }

        it("renders question header text") {
            expect(sut.headerLabel.text).toEventually(equal("Q1"))
        }
    }

}

Но когда вы запускаете тест, ничего не происходит только с «test fail».Я устанавливаю точку останова внутри spec (), но она просто проходит. (Ничего не происходит)

После удаления файла xib и программного создания компонентов пользовательского интерфейса, тест, наконец, прошел успешно.

Как проверить ViewController (viewDidLoad и т. Д.), Который содержит файл XIB при использовании Quick?

1 Ответ

0 голосов
/ 11 декабря 2018

Возможно, в вашем QuestionViewController init у вас есть код, подобный следующему:

init(question:String) {
    //do something with a question
    super.init(nibName:"QuestionNibFileName", bundle: nil)
}

И это нормально работает в вашей основной цели, но не работает в тесте, потому что здесь пакет по умолчанию отличается.Вы должны использовать Bundle(for:type(of:self)), поэтому код должен выглядеть следующим образом:

init(question:String) {
    //do something with a question
    let bundle = Bundle(for:type(of:self))
    super.init(nibName:"QuestionNibFileName", bundle: bundle)
}
...