以前、Nuxtの単体テストをCypress使ってやる奴を書きましたが、実際にやってみてこれはこれでつらかった。
やっぱりメソッドとか簡単な部分はJestというかVue-test-util使ってちょこちょこっと書けた方が良い。
でもやっぱりあれこれやり始めるとVue-test-utilだとつらい・・・。
じゃー、使い分ければいいじゃんと。
で、そういう時に問題になるのが、カバレッジのマージ。
nycはいちをそれも出来るんだけど、マージの仕方が何か微妙な気がするのですが・・・。
どっちかにあるものの、MAXで見るか、平均で見るかって感じ?
単純に通ったコードのカウント部分マージしてくれればいいんだけどなー。
何でこういう感じになってるんだろ?何かやり方が間違ってるのかしら?
公式にも載ってるサンプルのリポジトリと同じやり方してみても、上手くいかない。
というか、ぶっちゃけ現状バグってますよね?istanble-lib-coverageがおかしいのかしら?色々やってみると大体結局↓のエラーが出る。
TypeError: Cannot read property 'start' of undefined
多分これ、coverage.jsonのファイルって下の感じの定義じゃないですか。
statementMap:{ "0":{ start:1,end:1 }, "1":{ start:2,end:2 } }, s:{"0":3, "1", 4}
で、sのオブジェクトがstatementMapの定義してる行数を通った回数になってると思うのですが、
マージすると、statementMap側に存在しないキーがs側に出来る場合があるっぽ。
ダメじゃん。
同一ソースなら一緒になるはずなのですが、
jestとcypressで微妙に定義の仕方が違うん場合があるんですよね。行数は一緒なんですけど。
なので、cypressとjestの組み合わせ限定ですが、coverage.jsonをマージするスクリプトを作った。
別に大した事はやってないのですが、だいぶ面倒くさいところなので、何かに使えれば参考にどうぞ。
下記にあげました。