我正在尝试在现有应用程序上首次实施单元测试。首先,与我在教程中看到的相反,应用程序在我尝试运行单元测试时启动。我尝试在我的测试目标上将 Host App 设置为“None”,但遇到了几个与“symbols not found”错误有关的问题。
然后,即使应用程序启动,我也一直尝试运行单元测试,但我遇到了以下错误:
'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,但在我的情况下不起作用。还尝试将变量设置为弱。