以前、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をマージするスクリプトを作った。

別に大した事はやってないのですが、だいぶ面倒くさいところなので、何かに使えれば参考にどうぞ。

下記にあげました。

https://github.com/n79s/cy-jest-coverage-merge