Swift 测试应用程序启动时发生的API调用会导致多个调用需要完成
我第一次尝试在现有应用程序上实现单元测试。首先,与我在教程中看到的相反,该应用程序是在我尝试运行单元测试时启动的。我尝试在测试目标上将主机应用程序设置为“无”,但遇到了与“未找到符号”错误有关的几个问题 然后,即使在应用程序启动时,我也一直尝试运行单元测试,但我遇到了以下错误: “NSInternalInconsistencyException”,原因:“API冲突-对Did登录用户的-[xTestExpection fulfill]进行了多次调用。” 我的猜测是,我的测试登录用户并满足委托人的期望,但应用程序本身在启动时正在登录用户,因此“fully”会被调用两次 我的测试如下:Swift 测试应用程序启动时发生的API调用会导致多个调用需要完成,swift,xcode,xctest,xctestexpectation,Swift,Xcode,Xctest,Xctestexpectation,我第一次尝试在现有应用程序上实现单元测试。首先,与我在教程中看到的相反,该应用程序是在我尝试运行单元测试时启动的。我尝试在测试目标上将主机应用程序设置为“无”,但遇到了与“未找到符号”错误有关的几个问题 然后,即使在应用程序启动时,我也一直尝试运行单元测试,但我遇到了以下错误: “NSInternalInconsistencyException”,原因:“API冲突-对Did登录用户的-[xTestExpection fulfill]进行了多次调用。” 我的猜测是,我的测试登录用户并满足委托人的
func testLogInUser() {
UserManager.loginDelegate = self
expectation = expectation(description: "Did log in user")
UserManager.logInUser(withEmail: "jacobo@viewer.com", password: "jacobo123")
waitForExpectations(timeout: 10.0)
}
//Delegate Method
func didLogIn(user: User) {
XCTAssertEqual(user.email, "jacobo@viewer.com")
XCTAssertNotNil(user.uid)
XCTAssertNotEqual(user.type, .guest)
expectation?.fulfill() //Crashes here
}
因此,我正在寻找一种解决方案,要么让我在不运行应用程序的情况下运行测试和API调用,要么以某种方式避免被多次调用
在SO中有一个答案,建议在使用后将“期望值”设置为零,但在我的情况下不起作用。还尝试将变量设置为弱。您可以阻止正常的应用程序启动顺序。提供启动应用程序进行测试时使用的其他应用程序代理。看