我在一个 JS 文件中有这样的代码(当然是简化的):
$(function () {
var num;
$.getJSON('./getNumber.php', function (n) {
num = n;
});
$('#id').on('click', function () { alert(num); });
});
我需要编写两个单元测试:
- 确保脚本在页面加载时向服务器发送
./getNumber.php
请求 - 确保
#id
单击时num
会收到警报。
显然我需要 FakeXmlHTTPRequest 并模拟该alert
函数,甚至可以监视$.getJSON
. 但是我不确定在保持两个原子的同时编写测试的正确方法是什么。
我认为这样做的唯一方法是<script>
为每个测试动态注入块;但我只是觉得那是不对的。什么是正确的方法?谢谢。
编辑:基于 SO 之外的评论,我需要学习的是编写可测试的 Javascript,而不是尝试为低可测试性的东西提出测试用例。如果有人可以给我一些关于重写此代码的建议,我将不胜感激。