从 1.3.4 升级到 1.3.5 版本后,引用 undefined variable 会导致测试失败。
任何建议如何禁用此行为?我认为它与 js 严格模式有关,它默认启用此功能,但找不到禁用它的方法

JsTestDriver.conf 文件的一部分:

load:
  - program.js
  - dialog.js

程序.js:
Program = {};

对话框.js:
Program.Dialog = {};

错误信息:
引用错误:程序未定义

最佳答案

您现在可能正在使用不同的浏览器进行捕获(或不同的浏览器设置,例如在 IE 或严格模式下打开控制台),它们现在抛出不同的异常,或者您的代码库可能从那时起发生了变化。

JsTestDriver 没有改变 1.3.5 定义/ undefined variable 处理的行为,因为它只是捕获浏览器的异常。

无论如何,jsTestDriver 不会导致测试 失败 但在引用 undefined variable 时会导致测试 错误

例如,对于代码库中的这段代码(假设 undef 是一个 undefined variable ):

if(undef) alert("foo");

从命令行运行测试时的 jsTestdriver 输出是:
Total 2 tests (Passed: 1; Fails: 0; Errors: 1) (1,00 ms)
  Chrome 23.0.1271.64 Windows: Run 2 tests (Passed: 1; Fails: 0; Errors 1) (1,00 ms)
    PersonTest.testWhoAreYou error (0,00 ms): ReferenceError: undef is not defined

如您所见,测试套件中有 1 个错误,但 0 失败

编辑 :对于您的情况,jsTestDriver 可能会在您的 namespace 定义周围添加一个闭包。试试这个

代替:
var Program = {};

用:
window.Program = {};

对于 Program.Dialog 你不应该改变任何东西

请尝试一下,看看是不是原因。

关于javascript - 升级到 1.3.5 后 JsTestDriver 测试中断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13140391/

10-16 00:09