实习生中的测试解析错误不包括描述错误的行

时间:2013-12-18 13:00:20

标签: javascript node.js unit-testing intern

tl; dr如果在实习生中写入测试时出错,我似乎没有收到描述错误发生在哪一行的错误消息。我找到了一个解决方法,但它并不是理想的解决方案,因为它涉及到依赖项目中的代码混乱。有没有人有更好的方式/我只是做错了?谢谢!

详情: 我已经多次看到,当解析在实习生中编写的测试时出现问题(例如,未能关闭括号,引号等)时,不报告发生错误的实际行,并且只有类似的错误这(我已经将实际路径作为一个工作项目,但你得到了要点):

SyntaxError: Unexpected identifier at Function.vm.runInThisContext (<myproject>/node_modules/intern/node_modules/istanbul/lib/hook.js:163:16) at <myproject>/node_modules/intern/node_modules/dojo/dojo.js:745:8 at fs.js:266:14 at Object.oncomplete (fs.js:107:15)

我捅了一下,发现vm.runInThisContext中有一个未记录的(? - 它不在here)参数,如果启用它实际上提供了原始错误的详细信息(here和{ {3}}) - 有一些关于如何发挥作用的讨论,但是如果我在istanbul(如果它正在运行)中切换dojo.js和hook.js来使用这个参数,我会收到如下错误消息:

<myproject>/test/publisherConfigSpec.js:16 errorCb cat = dfd.rejectOnError(function(error) { ^^^ SyntaxError: Unexpected identifier at Function.vm.runInThisContext (<myproject>/node_modules/intern/node_modules/istanbul/lib/hook.js:163:16) at <myproject>/node_modules/intern/node_modules/dojo/dojo.js:745:8 at fs.js:266:14 at Object.oncomplete (fs.js:107:15)

这是我想要的输出(或者至少大大提高了我找到并修复错误的机会)但是它不理想与节点依赖关系,并且在我看来,它可能是太多的变化对于拉取请求(参见here)当解析测试代码输入时出错时,是否有另一种获取有用输出的方法?

感谢您的任何建议:)

1 个答案:

答案 0 :(得分:0)

Node.js为SyntaxError提供的输出显然不是很好,但我们可能不会在Intern的任何官方发行版中使用未记录的功能(它们因为某种原因而未被记录!)以使其以不同的方式工作。非语法错误(运行时错误)将被Intern正确地捕获并报告给您正在使用的任何记者。

在这种情况下,我建议你使用一个包含语法检查支持的编辑器:Komodo Edit / IDE,WebStorm,SublimeText,Eclipse,vim ...如果你到了试图运行语法无效的地步代码,你的代码编辑通过不告诉你你犯了错误而失败了。