我正在尝试构建这样的单元测试:
// region is a (Double, Double) tuple
XCTAssertEqual(region, (0.0, 200.0))
但是 Xcode 给我一个错误:Cannot invoke 'XCTAssertEqual' with an argument list of type ((Double, Double), (Double, Double))
有没有不同的方法可以在不提取元组成员并单独测试的情况下测试元组?
最佳答案
XCTAssertEqual
要求传递给它的两个参数是Equatable
,从方法签名可以看出。请注意,expression1
返回 T?
,并且 T
必须是 Equatable
:
func XCTAssertEqual<T : Equatable>(_ expression1: @autoclosure () throws -> T?, _ expression2: @autoclosure () throws -> T?, _ message: @autoclosure () -> String = default, file: StaticString = #file, line: UInt = #line)
但是Swift tuples aren't Equatable
,因此您不能将它们与 XCTAssertEqual
一起使用。
元组确实有一个==
方法——它们只是不符合协议(protocol)——所以你可以这样做:
let eql = region == (0.0, 200.0)
XCTAssertTrue(eql)
甚至:
XCTAssertTrue(region == (0.0, 200.0))
关于xcode - XCTest'ing 一个元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38175690/