【发布时间】:2025-11-21 18:10:01
【问题描述】:
我第一次尝试在现有应用上实施单元测试。首先,与我在教程中看到的相反,应用程序在我尝试运行单元测试时启动。我尝试在我的测试目标上将 Host App 设置为“无”,但遇到了几个与“未找到符号”错误有关的问题。
然后,即使应用程序启动,我也继续尝试运行单元测试,但我遇到了以下错误:
'NSInternalInconsistencyException',原因:'API 违规 - 多次调用 -[XCTestExpectation 实现] 以获取登录用户。'
我的猜测是我的测试登录了用户并满足了对委托的期望,但是应用程序本身在启动时正在登录用户,因此“满足”被调用了两次。
我的测试如下:
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 中有一个答案建议在使用后将“期望”设置为 nil,但在我的情况下不起作用。还尝试将变量设置为弱。
【问题讨论】:
标签: swift xcode xctest xctestexpectation