mochaでテスト実行時にflowの記述を自動で取り除く

はじめに

mochaでテスト実行するときに、flowの記述が残されたままだとテストできない。
だから、前までは前処理としてflowの記述を取り除いたフォルダを作成し、
そのディレクトリに対してテストを実行させていた。

しかし、余計なフォルダを作成させずにmochaを実行できる方法をたまたま見付けたので、 残しておこうと思う。

流れ

  1. テスト環境の容易
  2. flowのインストール
  3. flowの記述追加
  4. テスト失敗の確認
  5. flow-remove-typesの追加と設定
  6. テスト成功

0. テスト環境の用意

mochaとpowerassertを使ったテスト環境構築方法は、以前作成した記事power-assertとmochaを使ったnodejsのテストを参考にしてください。 今回もこの環境を使用します。

1. flowのインストール

前の記事では, flowをインストールしてなかったので追加します。

 npm install --save-dev flow-bin
 ./node_moduleds/.bin/flow init

2. flowの記述追加

前回作成したファイルにflowの記述を追加

// @flow

class Calc {
  
  // flowの記述追加
  static add(x: number, y: number): number {
    return x + y;
  }

  // flowの記述追加
  static sub(x: number, y: number): number {
    return x - y;
  }

}

module.exports = Calc

3. テスト失敗の確認

npm testと叩くと下図の通り。

f:id:poppon555:20180408194909p:plain

Unexpected token :と表示されてる通り、余計なコロンがあるのでテストは失敗します。

4. flow-remove-typesの追加と設定

 npm install --save-dev flow-remove-types

package.jsonの修正

//package.json
scripts: {
  "test": "mocha --require intelli-espower-loader --require flow-remove-types/register ./test/"
}

複数のモジュールを--requireしたい時は、モジュールごとに--requireをつければよいよう。これで問題なくテストは動きます。

5. テスト成功

f:id:poppon555:20180408195523p:plain