我有类似如下的雨燕单元测试:如何在Swift单元测试中声明可选Bool的值?
var firstArgumentInClosure: Bool?
someFunc { firstArgumentInClosure = $0 }
XCTAssertTrue(firstArgumentInClosure?)
我试图断言关闭叫的第一个参数是true
。
这不会错误消息编译:
'?'必须遵循的一个电话,成员查找,或下标
的一种方式,我可以解决这个问题是通过改变断言:
XCTAssertEqualTrue(firstArgumentInClosure ?? false)
有没有做到这一点更简洁的方式?看到?? false
有点奇怪。我也不想隐式地打开!
的可选项,因为我不想让测试崩溃,我只是想让测试失败,如果firstArgumentInClosure
是nil
或false
。我也想避免任何if let
以保持简洁。
同样,当我试图使用XCTAssertFalse
来确保Bool?
为false
时,我会如何编写这样的断言?
'XCTAssertEqualTrue(firstArgumentInClosure?false)'有什么问题? – Alexander
如果测试失败,则不清楚封闭是否从未被调用或封闭是否被错误的参数调用。 –