私はJSファイルに次のようなコードを持っています(もちろん簡略化されています):
$(function () {
  var num;
  $.getJSON('./getNumber.php', function (n) {
    num = n;
  });
  $('#id').on('click', function () { alert(num); });
});
2つの単体テストを作成する必要があります。
- ページが読み込まれたときに、スクリプト./getNumber.phpがサーバーにリクエストを送信することを確認してください
- #idがクリックされると、アラートが表示されることを確認してください- num。
明らかに、FakeXmlHTTPRequestが必要で、alert関数をモックします。おそらく、をスパイし$.getJSONます。ただし、2つのアトミックを維持しながらテストを作成する正しい方法がわかりません。
そうすることだけが<script>、各テストのブロックを動的に注入することになると思います。しかし、私はそれが正しくないと感じています。正しい方法は何ですか?ありがとう。
編集:SO以外のコメントに基づいて、私が学ぶ必要があるのは、テスト可能性の低いもののテストケースを考え出すのではなく、テスト可能なJavascriptを作成することです。誰かがこのコードを書き直すことについて私にいくつかのアドバイスを与えることができれば、それも大いに感謝されるでしょう。