私たちは Jasmine と RequireJS を単体テストにうまく組み合わせて使用してきましたが、現在はコード カバレッジの追加を検討しており、そのためにBlanket.jsを調査しています。名目上は Jasmine と RequireJS をサポートしていることはわかっており、GitHub で「jasmine-requirejs」ランナーを正常に使用できますが、このランナーはモデルとは少し異なるアプローチを使用しています。つまり、次を使用してテスト仕様をロードします。 runner.html のスクリプト タグ。一方、私たちのアプローチは、次のように RequireJS を介して仕様をロードすることでした (これは、ランナーでの requirejs 呼び出しのコールバックです)。
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.TrivialReporter();
var jUnitReporter = new jasmine.JUnitXmlReporter('../JasmineTests/');
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.addReporter(jUnitReporter);
jasmineEnv.specFilter = function (spec) {
return htmlReporter.specFilter(spec);
};
var specs = [];
specs.push('spec/models/MyModel');
specs.push('spec/views/MyModelView');
$(function () {
require(specs, function () {
jasmineEnv.execute();
});
});
上記の関数の依存関係としてブランケットまたはジャスミンブランケットがない場合、このアプローチは単体テストを行うだけでうまく機能します。それらを (require.config パスと shim を使用して) 追加すると、それらが正常にフェッチされたことを確認できますが、発生しているように見えるのは、jasmine-blanket の オーバーロードを取得することだけですjasmine.getEnv().execute
。これは単に「ブランケットを待っています... "コンソールに。テスト自体の実行をトリガーするものは何もありません。
私たちのアプローチでdata-cover
は、RequireJS がスクリプト タグではなくスクリプトの読み込みを行っているため、通常の属性を提供する方法がないことはわかっていますが、この場合、Blanket は少なくとも何も計算しないのではなく、すべてのカバレッジを計算することを期待していました。カバレッジ パターンを指定する非属性ベースの方法はありますか? jasmine-blanket がミックスされたら、実際のテスト実行をトリガーするために他に何かする必要がありますか? テスト仕様をロードする RequireJS で Blanket を動作させることはできますか?