首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js的断言库?

node.js的断言库?
EN

Stack Overflow用户
提问于 2013-01-12 23:02:01
回答 5查看 4.8K关注 0票数 6

node.js assert为单元测试提供的断言非常有限。甚至在我编写第一个测试之前,我就已经创建了一些断言,因为很明显,我将继续重用它们。

你能推荐一些好的断言库来测试常见的javascript情况(对象结构,对象类等)吗?

理想情况下,它应该与节点单元很好地集成(或者更好地,扩展它的断言)-我的断言不能,我必须将test作为额外的变量传递给它们……

我唯一见过的就是Chai。你能对此说些什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-12 23:10:43

我使用自己的断言库node-assertthat。它的特点是它的语法看起来非常流利,(IMHO)非常可读性(灵感来自.NET的NUnit ),例如:

代码语言:javascript
复制
var actual = [...],
    expected = [...];

assert.that(actual, is.equalTo(expected));

基本上它工作得很好,但是还没有实现太多的断言。所以这是不是“好”的,我不会决定--这取决于你。

它利用了一个比较库,该库提供了一些功能,比如按结构比较对象和其他一些不错的功能:compare.js

例如,如果你必须使用对象,并且你想知道它们是否相等(通过它们的值),你可以这样做

代码语言:javascript
复制
cmp.equal(foo, bar)

或简称为:

代码语言:javascript
复制
cmp.eq(foo, bar)

你也可以通过结构来比较对象,例如检查两个对象是否实现了相同的接口。你可以这样做

代码语言:javascript
复制
cmp.equalByStructure(foo, bar)

或简称为:

代码语言:javascript
复制
cmp.eqs(foo, bar);

再说一次,我会让你决定它是否“好”,但至少我对使用两者都很满意。

PS:我知道StackOverflow不是宣传你自己的项目的地方,但我认为在这种情况下,答案迫使我这样做,因为“你能推荐吗”的答案是“我自己的工具”在这种情况下,对于 me ,它是最合适的。因此,请不要认为这篇文章是垃圾邮件。

票数 2
EN

Stack Overflow用户

发布于 2013-10-04 08:56:58

您更喜欢使用assert语法或BDD风格的断言(smth.must.equal(...))测试- whether,这在某种程度上也是一个偏好问题。

对于assert样式,Chai's assert可能工作得很好。与Node自己的assert模块相比,它有更多的内置匹配器。

如果您发现BDD样式更具可读性和流畅性,那么这三种方法都可以做到这一点:

由您的truly.

创建

它们的区别主要在于当涉及到各种匹配器时,它们的API的简单性或复杂性。不过,它们的基本相等断言是可互换的- foo.must.equal(42)foo.should.equal(42)

在选择Chai.js和Should.js时,有一件事你需要注意,我认为这是一个基本的设计错误-他们在属性访问上断言的做法,而不是将匹配器作为函数调用的做法。我已经编写了一个critique of asserting on property access,以及它如何在测试中导致误报。

票数 10
EN

Stack Overflow用户

发布于 2013-01-12 23:35:46

Chai很棒。对于Node和浏览器测试,我尝试了相当多的不同设置,但唯一能让我满意的是Mocha + Chai + Sinon。但是选择一个断言库也是一个风格问题,我个人喜欢带有链式接口的chai.expect,而且它有你需要的所有方法:类型验证、对象属性检查、异常…我也发现它非常灵活。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14294567

复制
相关文章

相似问题

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