Поиск…


является

is макрос является ядром clojure.test библиотеки. Он возвращает значение выражения своего тела, печатая сообщение об ошибке, если выражение возвращает значение false.

(defn square [x]
  (+ x x))

(require '[clojure.test :as t])

(t/is (= 0 (square 0)))
;;=> true

(t/is (= 1 (square 1)))
;;
;; FAIL in () (foo.clj:1)
;; expected: (= 1 (square 1))
;;   actual: (not (= 1 2))
;;=> false

Группировка связанных тестов с помощью макроса тестирования

Вы можете группировать связанные утверждения в deftest модульных тестах в контексте с помощью макроса testing :

(deftest add-nums 
  (testing "Positive cases"
    (is (= 2 (+ 1 1)))
    (is (= 4 (+ 2 2))))
  (testing "Negative cases"
    (is (= -1 (+ 2 -3)))
    (is (= -4 (+ 8 -12)))))

Это поможет прояснить результат теста при запуске. Обратите внимание, что testing должно происходить внутри самого deftest .

Определение теста с наихудшим

deftest - это макрос для определения модульного теста, аналогичный модульным испытаниям на других языках.

Вы можете создать тест следующим образом:

(deftest add-nums
  (is (= 2 (+ 1 1)))
  (is (= 3 (+ 1 2))))

Здесь мы определяем тест с именем add-nums , который проверяет функцию + . Тест имеет два утверждения.

Затем вы можете запустить такой тест в текущем пространстве имен:

(run-tests)

Или вы можете просто запустить тесты для пространства имен, в котором находится тест:

(run-tests 'your-ns)

являются

are макросъемки также часть clojure.test библиотеки. Это позволяет делать несколько утверждений против шаблона.

Например:

(are [x y] (= x y)  
   4 (+ 2 2)
   8 (* 2 4))
=> true

Здесь (= xy) действует как шаблон, который принимает каждый аргумент и создает из is утверждение.

Это расширяет неоднократное is утверждение:

(do 
  (is (= 4 (+ 2 2)))
  (is (= 8 (* 2 4))))

Оберните каждый тест или все тесты с помощью приспособлений

use-fixtures позволяет обертывать каждый deftest в пространстве имен кодом, который выполняется до и после теста. Его можно использовать для крепления или шлейфа.

Светильники - это просто функции, которые выполняют тестовую функцию и запускают ее с помощью других необходимых действий (до / после, обертка).

(ns myapp.test
  (require [clojure.test :refer :all])

(defn stub-current-thing [body]
  ;; with-redefs stubs things/current-thing function to return fixed
  ;; value for duration of each test
  (with-redefs [things/current-thing (fn [] {:foo :bar})]
    ;; run test body
    (body)))

(use-fixtures :each stub-current-thing)

При использовании с :once он завершает весь цикл тестов в текущем пространстве имен с помощью функции

(defn database-for-tests [all-tests]
  (setup-database)
  (all-tests)
  (drop-database))

(use-fixtures :once database-for-tests)

Запуск тестов с Leiningen

Если вы используете Leiningen, и ваши тесты находятся в тестовом каталоге в корне вашего проекта, вы можете запускать свои тесты с lein test



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow