このブログははてなブログからの移行記事です。
ユニットテストをmocha + power-assert + TypeScriptで書く際、espower-typescriptを導入したのだけど、その際にハマったのでメモ。
前提
- TypeScript 3.0.1
- power-assert 1.6.0
- espower-typescript 9.0.0
起きたこと
mochaでテストを実行するとローカルの型定義ファイル(.d.ts
)を読み込まず、エラーになった。
エラーメッセージ
原因
いろいろ調べるとespower-typescriptが依存しているts-nodeが原因っぽい。
このts-nodeのversionsが7.0.0からデフォルトの挙動でローカルのtsconfig.jsonの読み込みをスキップするようになった。
これを有効にするにはCLI実行時であれば--files
オプションを渡すだけなのだが、espower-typescriptにラップされてる上にコードを読んだ感じoptionで渡す方法も無いのでPRを出してoptionを渡せる or --files
オプションが有効になるよう書き換えるしかない。
解決策
と、面倒だなぁと悶々としていたら環境変数を指定することでオプション指定ができることに気づいた。
--files Load files from tsconfig.json on startup (TS_NODE_FILES, default: false)
なので以下のようにコマンド実行すればespower-typescript内部のts-nodeの--files
オプションが有効になった状態でテストを実行できる。
TS_NODE_FILES=true mocha -r espower-typescript/guess src/**/*.test.ts
後半のコマンドはよしなに、大事なのはTS_NODE_FILES=true
をつけることです。