【问题标题】:How to test view controller with XIB file using Quick?如何使用 Quick 测试带有 XIB 文件的视图控制器?
【发布时间】:2018-12-11 22:55:44
【问题描述】:

我正在使用 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"))
        }
    }

}

但是当运行测试时,只是“测试失败”没有任何反应。 我在 spec() 中设置了断点,但它只是通过了。(没有任何反应)

在移除xib文件并以编程方式制作UI组件后,测试终于成功了。

使用Quick时如何测试包含xib文件的ViewController(viewDidLoad等)?

【问题讨论】:

    标签: swift unit-testing xib nimble


    【解决方案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)
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-19
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 2017-11-19
      相关资源
      最近更新 更多