before / after
初期データ投入やゴミ掃除に便利な before()
/after()
と beforeEach()
/afterEach()
の使い方です。
その名の通り、テストの前後に行う処理を設定できる機能です。describe()
の外側と内側のどちらに書くかによって、適用される範囲が変わります。
describe()
の外側で before()
/after()
... テストプログラムの最初/最後に1回だけ起動
describe()
の外側で beforeEach()
/afterEach()
... 全ての it()
の前/後に1回ずつ起動
describe()
の内側で before()
/after()
... describe()
の最初/最後に1回だけ起動
describe()
の内側で beforeEach()
/afterEach()
... describe()
内の全ての it()
の前/後に1回ずつ起動
全ての describe()
の前後に起動されるものは無いようです。外側で beforeEach()
しても、適用されるのは全ての it()
の前後となります。
ちなみに it()
の内側で書いた場合は、describe()
の外側で書いた場合と同じ動きになります。当該の it()
内だけで効いてくれたりはしません。
only / skip
一部分だけの再テスト等に便利な only()
/skip()
の使い方です。
only()
/skip()
は、describe
または it
にチェーンして使うことができます。
only()
をチェーンすると、実行時に当該 describe
(または it
) のみがテストされます。テストプログラムの開発中に、同じケースだけを繰り返し起動したりする時に便利です。
skip()
をチェーンすると、実行時に当該 describe
(または it
) がスキップされます。変なエラーケースとか、普段は通らないケースを一つのテストプログラムに書いておきたい時に使えます。
timeout
リモートのリソースにアクセスする場合など、ちょっと時間がかかるかもしれないケースでは、Mochaがタイムアウトして Timeout of 2000ms exceeded
エラーを吐く場合があります。
Mochaのタイムアウトは、デフォルトでは it()
ごとに2,000ミリ秒です。なお、上述の before()
や beforeEach()
にも同様のタイムアウトがあります。
このタイムアウトを変更するには、describe()
it()
before()
等の内側で this.timeout(ミリ秒)
します。describe()
内で行った場合、describe()
内の全ての it()
に適用されます。
テスト中に環境変数を設定する
テスト対象のモジュール内で環境変数を使っている場合があります。
テスト起動用の npm-scripts に書いてもいいのですが、テストプログラム内で以下のように書けば、その場で環境変数の値を設定することもできます。
ESLintでエラーが出る場合は?
ESLintを入れてる環境では、テストプログラム内で describe
とかが未定義 (not defined
) でエラーになってしまいます。
これは、テストプログラムの先頭に以下の行を追記することで回避できます。
以上
これでたぶん基本編は終わりです。何かもっとあったら追記します。
次回はWebAPI編で、WebAPIのレスポンスをテストします。