使XCTAssertions接受函数返回值作为参数

时间:2015-02-11 04:09:29

标签: swift xctest

在Swift中,当有人使用XCTest断言时,他们可以编写这样的断言:

XCTAssertTrue(foo.sameAs(bar), "\(foo) is not equal to \(bar)")

当断言无法让某人知道事情失败的原因时,这允许额外的上下文。

更多类似的事情:

func printText(shouldPrint: BooleanType, text: String) {
    if shouldPrint {
        println("\(text)")
    }
}

func textData() -> (BooleanType, String) {
    return (true, "This is a test.")
}

printText(textData())

将编译并成功打印出来"这是一个测试"。但是,以下内容:

XCTAssertFalse(textData())

产生编译错误:type'(BooleanType,String)'不符合协议' BooleanType'

错误的原因是什么,以及可以做什么,以便断言将接受函数的返回值作为其参数?

1 个答案:

答案 0 :(得分:1)

XCTAssertFalse需要一个布尔参数,在这种情况下,你传入一个元组(Boolean, String)在这种特殊情况下,尝试提取布尔元素:

XCTAssertFalse(testData().0)

它适用于printText,因为只要类型匹配,swift会自动将元组解包为函数参数。