Как проверить контроллер представления с файлом XIB, используя Quick?
Я использую Быструю библиотеку для модульного тестирования.
Я пытаюсь проверить 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 ответ
Вероятно, в вашем 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)
}