17-讨论
18.4.3 讨论
人工同步方法的缺点是当测试中的代码在别处失败时,有可能永远不会调用 start() 。在这种情况下,测试运行器不会继续,从而永远不会结束和显示最终结果,甚至不能显示当前测试的结果,而只显示之前的测试结果。当发生这种情况时,首先需要搜索前面结束的测试,找出没有结束的测试,然后找到代码中的测试,跳到下一个测试。完成了这一步,可以为 stop() 的调用添加一个超时参数来简化调试:
test("a test", function() {
stop(500);
$.getJSON("/someurl", function(result) {
equals(result.value, "someExpectedValue");
start();
});
});
在这个例子中,测试运行器将等待500毫秒让测试结束(使用 setTimeout );如果测试没有结束则将其声明为失败并继续运行。通过查看其他测试结果,就能够更简单地找出实际问题并加以修复。
但是,对于常规测试不应该使用超时参数。如果为了调试而添加该参数,在测试正常工作之后删除它。
这是为什么?超时的缺点是使测试变得不确定。在慢速或者负载沉重的机器上运行测试时,超时可能太短,导致其他完全没有问题的测试失败。寻找一个根本不存在的缺陷是非常费时而令人沮丧的经历——一定要避免。