Swift 4 - ошибка XCTAssertThrowsError: не выдавал ошибку - PullRequest
0 голосов
/ 17 мая 2019

Я проверяю обработку ошибок для SFSpeechRecognizer. Я не могу заставить функцию выдать ошибку, используя XCTAssertThrowsError().

Создание SFSpeechRecognizer вернет объект или nil, если локали нет.

public convenience init?() // Returns speech recognizer with user's current locale, or nil if is not supported

public init?(locale: Locale) // returns nil if the locale is not supported

func createSpeechRecognization(locale : Locale) throws -> SFSpeechRecognizer {
    guard let speechRecognizer = SFSpeechRecognizer(locale: locale) else {
        throw SpeechToTextError.speechRecognizerIsNil
    }
    return speechRecognizer
}

Вот функция модульного теста, в которой я пытаюсь бросить:

func testCreateSpeechToTextAudioSessionNotNotAvailable() {
    XCTAssertThrowsError(try sut.createSpeechRecognization(locale: Locale.current)) {error in
        XCTAssertEqual(error as? SpeechToTextError, SpeechToTextError.speechRecognizerIsNil)
    }
}

Проведено модульное тестирование из-за ошибки:

Ошибка XCTAssertThrowsError: ошибка не возникла.

Я не уверен, почему это происходит. Есть предложения?

1 Ответ

0 голосов
/ 17 мая 2019

XCTAssertThrowsError не заставляет функцию выдавать исключение, она просто утверждает, благодаря @ mag_zbc.

Я изменил юнит-тест на:

func testCreateSpeechToTextAudioSessionNotNotAvailable() {
    var locale : Locale = Locale(identifier: "pwned")

    XCTAssertThrowsError(try sut.createSpeechRecognization(locale: locale)) {error in
        XCTAssertEqual(error as? SpeechToTextError, SpeechToTextError.speechRecognizerIsNil)
    }
}

И это прошло испытание.

...