我对Swift相当新,我正在尝试编写一个单元测试(使用XCTest)来测试以下函数:
func login(email: String, password: String) {
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
if let _error = error {
print(_error.localizedDescription)
} else {
self.performSegue(identifier: "loginSeg")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的研究已经确定我需要使用XCTestExpectation功能,因为默认情况下XCTest同步执行意味着它不会等待闭包完成运行(如果我错了请纠正我).
什么让我失望是我如何测试登录功能,因为它本身调用异步函数Auth.auth().signIn().我正在尝试测试signIn是否成功.
如果这已经得到回答,我很抱歉,但我找不到直接解决这个问题的答案.
谢谢
更新:
在答案和进一步研究的帮助下,我通过登录功能进行了修改,以使用转义闭包:
func login(email: String, password: String, completion: @escaping(Bool)->()) {
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
if let _error = error {
print(_error.localizedDescription)
completion(false)
} else {
self.performSegue(identifier: "loginSeg")
completion(true)
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我按以下方式测试:
func testLoginSuccess() {
// other setup
let exp …Run Code Online (Sandbox Code Playgroud)