Я относительно новичок в модульном тестировании и надеюсь достичь максимально возможного покрытия кода, шаблон do {} catch {} доставляет мне горе, пытаясь достичь этой цели.
Учитывая этот кусок кода:
func testUrlRequest_WithAuthenticationNoToken_ExpectingAuthenticationFailure() {
let mockController = MockAuthenticationController()
mockController.token = nil
Server.authenticationController = mockController
do {
_ = try Server.urlRequestWithHeaders(to: arbitraryEndpoint, excludeBearerToken: false)
XCTFail("Expected throw when no token is present")
} catch {
XCTAssertEqual(error as? Server.Errors, .authenticationFailure)
}
}
Метод Server.urlRequestwithHeaders () правильно генерирует ошибку, которая перехватывается блоком catch {}, но Xcode дает мне такой результат для покрытия кода:
Кажется, у него есть две проблемы: сначала предупреждение о том, что XCTFail () никогда не будет выполнено (предупреждение с пунктирной красной линией), затем красное покрытие 0, соответствующее последнему "}" в коде, поэтому я предполагаю, что это какое-то авто сгенерированный код возврата, который никогда не выполняется.
Есть ли способ правильно сказать XCode, что путь к коду совершенно не ожидается, и поэтому игнорировать его в части покрытия кода? Или есть лучший шаблон для генерации исключений в модульном тесте?