我刚刚开始使用YUI3测试模块(http://yuilibrary.com/yui/docs/test/)。
我有很多验证状态的断言的测试用例。如果其中一个断言失败,则TestConsole指示断言失败,但不指示测试中的许多断言中的哪一个失败。如果故障消息报告行号,那就太好了。
浏览器异常实际上包含JS失败行号,但是YUI3测试类将其过滤掉并抛出自己的异常,该异常似乎不包含行号。有没有一种简单的方法来添加此报告,同时仍然利用YUI3测试类作为工具??
发布于 2012-05-06 00:26:57
我将从tl;dr开始。
YUI3不提供任何内部方法来显示失败测试的行号。我认为有可能操纵错误构造函数,以便您可以询问它们;然而,问题是Error.lineNumber只在某些浏览器中被支持(我相信它只在Mozilla中)。
即使这确实有效,您最终也会意识到这有点复杂。你必须始终确保这样做:
throw new Error*(...);在你的调用代码中,你总是必须这样做:
try {...} catch(e) { /* e.lineNumber */ }即使这一切都有效,而且你愿意这么做,我也不会推荐你这么做。
真正的答案
问题的根源在于您的测试方法中似乎有多个断言。试图变得务实的开发人员有时会告诉您“每个测试方法一个断言”是不合理的和教条的。认为每个测试方法的多个断言是fine...until是非常吸引人的。
我确信有时多个断言更好,但我还没有看到它。我已经测试多年了,下面是我发现的:
阅读:
https://stackoverflow.com/questions/10254522
复制相似问题