0
0

More than 1 year has passed since last update.

`deno test` で付けたほうがよさそうなオプション

Last updated at Posted at 2022-01-17

denoには組み込みのテストランナーが備わっています。テストランナーはdeno testコマンドで利用できますが、いくつかのオプションを指定することができます。その中から便利そうなものをピックアップして紹介します。

deno testで付けたほうがよさそうなオプション

deno test --parallel

--parallelオプションを指定すると、複数のCPUを使ってテストを並列実行します。

> deno test --parallel   # CPUの個数分並列実行する
> deno test          # --parallelオプションが指定されていない場合は並列実行しない

デフォルトでは、CPUの個数分だけ並列に実行されます。この数は環境変数DENO_JOBSに数値を指定することで変更できます。

--parallelオプションを指定しない場合、並列実行されないので注意しましょう。
筆者の場合は、--parallelオプションを指定することで、1分半かかっていたCIを45秒に短縮することができました。

かつては--jobsというフラグ名でしたが、v1.24からフラグ名が--parallelに変更されました。

deno test --shuffle=<NUMBER>

--shuffleオプションを指定すると、テストの実行順をシャッフルできます。
実行順序に依存しているテストを見つけ出し、バグの発見に繋がります。

オプションの引数は0以上1以下の整数で、シャッフルに使うランラムシードを指定できるようです。

> deno test --shuffle # テストの実行順序がシャッフルされる
> deno test           # デフォルトではシャッフルされない

deno testの便利なオプション

付けるべき、までは行かないものの、あると便利なオプションを紹介します。

deno test --watch

ソースコードの変更を監視して、変更があった場合にテストを再実行します。
このオプションの便利な所は、変更があったファイルに依存するテストのみ再実行してくれるところです。

> deno test --watch # ソースコードの変更を監視

deno test --doc

JSDocのコードブロックを型チェックします。
将来的にはテストが実行されるようになるそうですが、今のところ型チェックだけです。

/**
 * # ↓この部分の型チェックが実行される
 * ```ts
 * import { add } from "./code.ts";
 * add(2, 3)
 * ```
 */
export function foo(a: number, b: number): number {
  return a + b;
}
> deno test --doc

deno test --import-map <FILE>

import mapを使うと、import文を書き換えて依存関係にモンキーパッチを当てることが可能です。

import_map.json
{
  "imports": {
    "https://example.com/": "./example_com/"
  }
}
// 実行時にimport mapを指定すると、example_com/foo からimportしているかのように振る舞う
import {} from "https://example.com/foo";
deno test --import-map import_map.json

テストに限らず、deno runで実行する時にもimport mapを使用できます。

deno test --fail-fast=<N>

このオプションを指定すると、テストが1つでも失敗した場合は、他のテストを実行することなく即座に終了します。

deno test --inspect

Chromeなどの開発者ツール(デバッガ)に接続することができます。
deno runコマンドやdeno replコマンドでも使用できます。

deno test --no-run

--no-runオプションを指定すると、テストを実行せずに型チェックだけを行います。
deno cacheコマンドでも同じ効果があります。

deno test --no-check=<NO_CHECK_TYPE>

TypeScriptファイルの型チェックを行わないオプションです。
--no-check=remoteを指定すると、リモート依存関係の型チェックを行わずにローカルファイルのみ型チェックします。

> deno test --no-check        # 型チェックしない
> deno test --no-check=remote # ローカルファイルのみ型チェック

--no-check=remoteは、外部ライブラリだけから型エラーが出ている時などに重宝しそうです。

deno test --filter <filter>

実行するテスト名をフィルタリングします。
指定したテスト名に一致したテストだけ実行されます。

deno test --coverage=<DIR>

deno coverageコマンドと合わせて、カバレッジを出力することができます。

まとめ

deno testコマンドに指定できるオプションについて紹介しました。せっかく高機能なテストランナーが組み込まれているので、活用していきたいところです。
この記事で紹介した情報は、deno test --helpコマンドから参照することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0