当前位置:嗨网首页>书籍在线阅读

17-讨论

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

18.4.3 讨论

人工同步方法的缺点是当测试中的代码在别处失败时,有可能永远不会调用 start() 。在这种情况下,测试运行器不会继续,从而永远不会结束和显示最终结果,甚至不能显示当前测试的结果,而只显示之前的测试结果。当发生这种情况时,首先需要搜索前面结束的测试,找出没有结束的测试,然后找到代码中的测试,跳到下一个测试。完成了这一步,可以为 stop() 的调用添加一个超时参数来简化调试:

test("a test", function() {
   stop(500);
   $.getJSON("/someurl", function(result) {
     equals(result.value, "someExpectedValue");
     start();
   });
});

在这个例子中,测试运行器将等待500毫秒让测试结束(使用 setTimeout );如果测试没有结束则将其声明为失败并继续运行。通过查看其他测试结果,就能够更简单地找出实际问题并加以修复。

但是,对于常规测试不应该使用超时参数。如果为了调试而添加该参数,在测试正常工作之后删除它。

这是为什么?超时的缺点是使测试变得不确定。在慢速或者负载沉重的机器上运行测试时,超时可能太短,导致其他完全没有问题的测试失败。寻找一个根本不存在的缺陷是非常费时而令人沮丧的经历——一定要避免。