首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YUI3测试断言可以显示失败的行号吗?

YUI3测试断言可以显示失败的行号吗?
EN

Stack Overflow用户
提问于 2012-04-21 06:51:07
回答 1查看 97关注 0票数 1

我刚刚开始使用YUI3测试模块(http://yuilibrary.com/yui/docs/test/)。

我有很多验证状态的断言的测试用例。如果其中一个断言失败,则TestConsole指示断言失败,但不指示测试中的许多断言中的哪一个失败。如果故障消息报告行号,那就太好了。

浏览器异常实际上包含JS失败行号,但是YUI3测试类将其过滤掉并抛出自己的异常,该异常似乎不包含行号。有没有一种简单的方法来添加此报告,同时仍然利用YUI3测试类作为工具??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-06 00:26:57

我将从tl;dr开始。

YUI3不提供任何内部方法来显示失败测试的行号。我认为有可能操纵错误构造函数,以便您可以询问它们;然而,问题是Error.lineNumber只在某些浏览器中被支持(我相信它只在Mozilla中)。

即使这确实有效,您最终也会意识到这有点复杂。你必须始终确保这样做:

代码语言:javascript
复制
throw new Error*(...);

在你的调用代码中,你总是必须这样做:

代码语言:javascript
复制
try {...} catch(e) { /* e.lineNumber */ }

即使这一切都有效,而且你愿意这么做,我也不会推荐你这么做。

真正的答案

问题的根源在于您的测试方法中似乎有多个断言。试图变得务实的开发人员有时会告诉您“每个测试方法一个断言”是不合理的和教条的。认为每个测试方法的多个断言是fine...until是非常吸引人的。

我确信有时多个断言更好,但我还没有看到它。我已经测试多年了,下面是我发现的:

  1. 我给了每个方法多个断言,每次我都被不知道哪个断言失败的问题所困扰。这两种方法我都试过了,而且只有一种方法没有让我难堪。
  2. 每次测试一次断言会迫使你真正思考你正在测试什么/如何测试。

阅读:

  • Testing: One assertion per test
  • One Assertion Per Test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10254522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档