Swift 断言的包装器,它使用 Error
实例而不是 String
,以及一套测试函数来测试这些断言。
要使用 ErrorAssertions,只需在 Swift 源文件顶部导入它
import ErrorAssertions
只需这样做,因为 Swift 编译器会优先选择导入的模块而不是主 Swift 模块,您将获得 ErrorAssertion 版本的函数,如 fatalError(_:file:line:)
。
要在调用断言方法时使用 Error
而不是 String
,请使用错误版本
import ErrorAssertions
doSomething(completionHandler: { error in
if let error = error {
fatalError(error)
}
})
您可以将 Error
类型与 fatalError()
、assert()
、assertionFailure()
、precondition()
和 preconditionFailure()
一起使用。
在您的测试中,导入 ErrorAssertionExpectations
模块来测试您的应用程序中进行的断言(只要您已经导入了 ErrorAssertions
)。 在您的测试用例中,使用期望方法
func testThatAnErrorHappens() {
expectFatalError {
doAThingThatProducesAFatalError()
}
}
还有一些版本接受 Error
或 String
并验证生成的错误是否是您期望的错误
func testThatASpecificErrorHappens() {
expectFatalError(expectedError: URLError.badURL) {
loadURL("thisisnotaurl")
}
}
Swift Package Manager 是安装 ErrorAssertions 的首选方式。 将此存储库添加为依赖项
dependencies: [
.package(url: "https://github.com/SlaunchaMan/ErrorAssertions.git",
from: "0.2.0")
]
在您的目标中,将 ErrorAssertions
添加为主要目标的依赖项,如果您使用测试支持,则将 ErrorAssertionExpectations
添加到测试目标
targets: [
.target(name: "App", dependencies: ["ErrorAssertions")]
.testTarget(name: "AppTests", dependencies: ["ErrorAssertionExpectations"])
]
要将 ErrorAssertions 与 CocoaPods 一起使用,请在您的应用程序中使用主 pod 作为依赖项,并在您的测试中使用 ErrorAssertionExpectations pod
target 'App' do
pod 'ErrorAssertions'
end
target 'AppTests' do
pod 'ErrorAssertionExpectatoins'
end