サーチ…


isマクロはclojure.testライブラリの中核です。式が偽の値を返した場合はエラーメッセージを出力し、本文の式の値を返します。

(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)))))

これは、実行時にテスト出力を明確にするのに役立ちます。 testingdeftesttestingなければならないことに注意してください。

一貫性のあるテストを定義する

deftestは、他の言語の単体テストと同様に単体テストを定義するためのマクロです。

次のようにテストを作成できます。

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

ここでは、 +関数をテストadd-numsというテストを定義します。テストには2つのアサーションがあります。

現在のネームスペースで次のようなテストを実行できます:

(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でラップする

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