升级到1.3.5后,JsTestDriver测试中断

时间:2012-10-30 13:46:44

标签: javascript js-test-driver

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

JsTestDriver.conf文件的一部分:

load:
  - program.js
  - dialog.js

program.js:

Program = {};

dialog.js:

Program.Dialog = {};

错误讯息: ReferenceError:程序未定义

2 个答案:

答案 0 :(得分:0)

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

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

无论如何,当引用未定义的变量时,jsTestDriver不会导致测试失败,但会导致测试错误

例如,对于代码库中的这段代码(假设undef是未定义的var):

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可能会在您的名称空间定义周围添加一个闭包。试试这个

而不是:

var Program = {};

使用:

window.Program = {};

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

请尝试知道是否是原因。

答案 1 :(得分:-1)

最佳做法是定义您自己的未定义(jstestdriver.util.undefine;)或 使用void 0