Вызов 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/

Другие вопросы по тегам