Swift 测试应用程序启动时发生的API调用会导致多个调用需要完成

Swift 测试应用程序启动时发生的API调用会导致多个调用需要完成,swift,xcode,xctest,xctestexpectation,Swift,Xcode,Xctest,Xctestexpectation,我第一次尝试在现有应用程序上实现单元测试。首先,与我在教程中看到的相反,该应用程序是在我尝试运行单元测试时启动的。我尝试在测试目标上将主机应用程序设置为“无”,但遇到了与“未找到符号”错误有关的几个问题 然后,即使在应用程序启动时,我也一直尝试运行单元测试,但我遇到了以下错误: “NSInternalInconsistencyException”,原因:“API冲突-对Did登录用户的-[xTestExpection fulfill]进行了多次调用。” 我的猜测是,我的测试登录用户并满足委托人的

我第一次尝试在现有应用程序上实现单元测试。首先,与我在教程中看到的相反,该应用程序是在我尝试运行单元测试时启动的。我尝试在测试目标上将主机应用程序设置为“无”,但遇到了与“未找到符号”错误有关的几个问题

然后,即使在应用程序启动时,我也一直尝试运行单元测试,但我遇到了以下错误:

“NSInternalInconsistencyException”,原因:“API冲突-对Did登录用户的-[xTestExpection fulfill]进行了多次调用。”

我的猜测是,我的测试登录用户并满足委托人的期望,但应用程序本身在启动时正在登录用户,因此“fully”会被调用两次

我的测试如下:

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中有一个答案,建议在使用后将“期望值”设置为零,但在我的情况下不起作用。还尝试将变量设置为弱。

您可以阻止正常的应用程序启动顺序。提供启动应用程序进行测试时使用的其他应用程序代理。看