/ / Clojure unit-testing. Как да тествам, ако дадена функция дава изключение? - тестване на единици, ключа

Изпитване на единица Clojure. Как да тествам, ако дадена функция дава изключение? - тестване на единици, ключа

Виждам, че има начин да тествате дали дадена функция хвърля изключение от клас С. Но има ли начин да се тества дали дадена функция прави изключение? Или да твърди, че не трябва да прави изключение?

Отговори:

6 за отговор № 1

За тестове, които не се очакват изключения, напишете теста си като нормално. Всички изключения, които се хвърлят, няма да успеят да изпробват теста.

За тестове, които биха могли да изхвърлят изключение, тогава използвайте Exception или Throwable (Superclass на изключението).

Например:

(deftest mytest
(is (thrown? Exception (/ 1 0))))

(/ 1 0) ще хвърли a java.lang.ArithmeticException но също така ще бъде съчетано с родителския клас java.lang.Exception.

Можете също така да напишете a not-thrown? макро да правите обратното на thrown? макро в clojure.test.

Като странична бележка, обикновено искате да хванете по-конкретни грешки, когато тествате единица, тъй като вашият код може да хвърли нова неочаквана грешка, но тестовете ви ще преминат щастливо.