2

私は 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 を使用するのは少し間違っているように感じます。より良い方法はありますか?

4

2 に答える 2