xcode - XCTest'ing 一个元组

标签 xcode swift tuples xctest

我正在尝试构建这样的单元测试:

// 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/

相关文章:

python - 如何更改列表元组中的第一个值?

ios - 从 UITabBarController 场景转到 ViewController 并返回 "hides"UITabBar

ios - Xcode 7 中的 CoreData 类

ios - 访问 indexPath.row 字段变量

ios - 以表单大小显示弹出 View

ScrollView 不居中的快速缩放

scala - 将元组与null匹配

iphone - 使用 UIAutomation 和其他工具(例如分配)

swift - SpriteKit Swift 使整个场景变暗,然后再改回来

list - Haskell 递增元组的最后一个元素