びぼーろくっ!

誰かに見せるわけでもないけど、備忘録として。。

mochaのonlyを検知する。

今回の記事もmochaです。
mochaのonlyメソッドは付与されているテストのみ実行する事が出来るので
特定のテストの動作確認をしたい。って時に活用できるかと思います。

ただ、コミット時onlyを削除し忘れて
本来なら失敗するテストも成功してしまい気付かないケースがあります。
そうなるとテストがSkipされてテストで気付けない⇒よって手動実行みたいなケースも想像できます。
となると本末転倒です。。

そこでtest実行時、テスト対象のファイルから.onlyが付与されているものを
エラーとして返してくれるpackageをインストールしました。

dot-only-hunter
GitHub - dasilvacontin/dot-only-hunter: Hunt down `.only`s before it's too late.

まずはインストール。本番環境では不要なのでdevのみにインストールします。

npm install --save-dev dot-only-hunter

その後、package.json内のscriptsの中に下記を追加します。

    "dot-only-hunter":"dot-only-hunter test/**/*.js",
    "test": "dot-only-hunter && NODE_ENV=test mocha --recursive --compilers js:babel-register test/*",

test内で&&で囲み先にdot-only-hunterが実行するようにします。
これでdot-only-hunterが先にtestディレクリ内の.onlyを検知してくれて
onlyが付与されている状態であればテストをしないで失敗します。
skipされるのにテストを全体で実行しても意味がないので。。

対象のソースコード

    describe.only('clacTest', () => {
      it('testCase1',() => {
        testRunAndVerifycation(100,108);
      });

      it('testCase2', () => {
        testRunAndVerifycation(200,216);
      });
    });

実行してみます。

clac.js
f:id:kinachan0725:20170724164117p:plain

きちんと.onlyを検知できているみたいです。
では、.onlyを外してみます。

f:id:kinachan0725:20170724164818p:plain
ちゃんとdot-only-hunterが成功になり、その後のテストコマンドを実行しているのが分かります。

また、今回dot-only-hunterを適用するのはnpm testコマンドのみで
前回の記事でお伝えしたtest-debugのコマンドには適用しません。
describeにonlyを付与した状態でtest-debugを叩きながらテストコードを作成し、
終了後にonlyを削除する。もし忘れてしまったらnpm testで検知してくれるという運用を考えています。