0
在斯威夫特,当有人使用XCTest断言,他们可以写这样的断言:让XCTAssertions接受函数的返回值作为参数
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())
产生编译错误:类型(BooleanType,字符串)“不符合协议“BooleanType”
什么是错误的原因,有什么东西,可以这样做,因此断言将接受来自函数的返回值作为其参数?
罢工,我会猜测这是因为'XCTAssertFalse(condition,format ...)',即它是一个可变参数函数,所以参数不能可靠地解压缩。 – 2015-02-12 05:36:05