私は Jest を使って、Angular アプリケーションの単体テストを行っています。angularバインディングをテストするために、jsdomを使用しようとしています(注:IOではなくノードを使用しているため、v3.1.2を使用しています)。HTML を使用してスクリプトをロードする必要がある場合、スクリプトがロードされる前にテストが完了しているようです。
jsdom の例を使用して、テスト ケースを単純化しました。
it('updates the view without error', function(){
var jsdom = require('../../../../node_modules/jsdom/lib/jsdom');
jsdom.env(
'<p><a class="the-link" href="https://github.com/tmpvar/jsdom">jsdom!</a></p>',
["http://code.jquery.com/jquery.js"],
function (errors, window) {
//console.log("contents of a.the-link:", window.$("a.the-link").text());
console.log("Completed");
expect(errors).toBeNull();
}
);
console.log('exiting...');
});
このテストを実行すると、テストは成功しますが、"Completed" というログ メッセージは出力されません。expect(false).toBeTruthy() のように、expect を明らかに失敗するはずのものに置き換えることもできますが、テストは引き続き "合格"。jquery の注入を削除すると、すべてが期待どおりに機能します。
テストを終了する前に、スクリプトがロードされていることを確認するにはどうすればよいですか? より一般的に言えば、Jest で明示的に jsdom を使用するのは少し間違っているように感じます。より良い方法はありますか?