从1.3.4升级到版本1.3.5后,引用未定义的变量会导致测试失败。 有关如何禁用此行为的任何建议?我认为它与js严格模式有关,它默认启用此功能,但无法找到禁用它的方法
JsTestDriver.conf文件的一部分:
load:
- program.js
- dialog.js
program.js:
Program = {};
dialog.js:
Program.Dialog = {};
错误讯息: ReferenceError:程序未定义
答案 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
。