Вызов API тестирования, который происходит при запуске приложения, приводит к выполнению нескольких вызовов
Я пытаюсь впервые выполнить модульное тестирование в существующем приложении. Прежде всего, вопреки тому, что я вижу в руководствах, приложение запускается, когда я пытаюсь запустить модульные тесты. Я попытался установить для Host App значение "Нет" в моем тестовом объекте, но столкнулся с несколькими проблемами, связанными с ошибками "символы не найдены".
Затем я продолжал пытаться запускать модульные тесты даже при запуске приложения, но столкнулся со следующей ошибкой:
"NSInternalInconsistencyException", причина: "Нарушение API - сделано несколько вызовов -[XCTestExpectation execute] для пользователя, вошедшего в систему".
Я предполагаю, что мой тест регистрирует пользователя и выполняет ожидание делегата, но само приложение при запуске регистрирует пользователя, поэтому "execute" вызывается дважды.
Мой тест следующий:
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 есть ответ, который предлагает установить "ожидание" на ноль после использования, но в моем случае это не сработало. Также попытался установить переменную в слабое состояние.
1 ответ
Вы можете помешать нормальной последовательности запуска приложения. Укажите другой делегат приложения, который используется при запуске приложения для тестирования. Смотрите https://qualitycoding.org/ios-app-delegate-testing/