ts-jest : テストファイルから他のテストファイルをimportするとカバレッジが取得できない
はじめに
この記事は、表題の問題について、詳細と解決方法を共有するためのものです。
対象とする読者
この記事はjestおよびTypeScriptでの開発を行っている方を対象としています。それぞれのツールの環境構築などは取り扱いません。
動作環境
- node.js : v12.18.0
- TypeScript : v3.9.7
- ts-jest : v26.1.3
問題の詳細
特定の条件下で、ts-jestのカバレッジが取得できなくなります。
症状
- テストは成功し、エラーは発生しません。
- すべてのテスト対象ファイルのカバレッジが0%になります。
再現方法
まず、テストを含むファイルtest1.spec.ts
とtest2.spec.ts
を作成します。
▼test1.spec.ts
import { util } from "../src/util"
test("test1", () => {
supportTest();
...
});
export function supportTest():void{
...
}
▼test2.spec.ts
import { util } from "../src/util";
import { supportTest } from "./test1.spec";
test("test2", () => {
supportTest();
...
});
test1.spec.ts
にはexportされた関数supportTest
があります。test2.spec.ts
ではsupportTest
をimportしています。
解決方法
テストを含むファイルを相互にimportしない
この状態では、test1.spec.ts
にimportされているutil.ts
がJavaScriptにトランスパイルされ、カバレッジの取得に失敗します。
ts-jestで関数を共有したい場合は、jest.config.jsのtestMatchオプションの対象とならないファイルに関数を書きます。そして、テストを含むファイルからそれぞれimportします。
上記の再現方法を改善するなら、たとえばcommon.ts
というファイルを作成し関数を移します。このファイルにはテストは含まれません。test1.spec.ts
とtest2.spec.ts
はcommon.ts
から関数をimportします。
▼common.ts
export function supportTest():void{
...
}
▼test1.spec.ts
import { util } from "../src/util"
import { supportTest } from "./common";
test("test1", () => {
supportTest();
...
});
▼test2.spec.ts
import { util } from "../src/util";
import { supportTest } from "./common";
test("test2", () => {
supportTest();
...
});
以上、ありがとうございました。
Author And Source
この問題について(ts-jest : テストファイルから他のテストファイルをimportするとカバレッジが取得できない), 我々は、より多くの情報をここで見つけました https://qiita.com/masato_makino/items/0f26feaced6da13d7feb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .