首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Should.js -相等方法should.equals中的不一致性

Should.js -相等方法should.equals中的不一致性
EN

Stack Overflow用户
提问于 2016-03-06 23:39:14
回答 1查看 258关注 0票数 0

我正在使用should.js框架(v8.2.x)进行单元测试,并且一直在使用一些非常基本的测试。然而,由于考试失败,我遇到了这个问题,这使我很困惑。

我定义了这个虚拟函数来测试,add

代码语言:javascript
运行
复制
var add = function(a, b) {
  if (isNaN(a) || isNaN(b)) {
    throw new Error('One of the arguments is not a number');
  }
  return +a + +b
};

下面是我的模拟测试:

代码语言:javascript
运行
复制
should.equal(add('1', '1'), '2');   // passes
add('1', '1').should.equal('2')     // fails!

现在,根据他们的githubshould(something)something.should通常返回相同的东西,但是没有关于差异的其他信息。

根据他们的API文档should.equalassert.equal是一样的。但这次测试我通过了:

代码语言:javascript
运行
复制
assert.equal(add('1','1'), '2'); // passes

,所以我有三个问题:

  1. 为什么add('1', '1').should.equal('2')不及格?
  2. 为什么应该产生不同结果的两种用法?
  3. 为什么当should.equalsassert.equals有不同的行为时,他们会说它们是相同的?
EN

Stack Overflow用户

发布于 2016-03-07 08:45:49

回答你的问题和你做错了什么。

现在根据他们的github,应该(某物)和something.should通常返回相同的东西,但是没有关于区别的额外信息。

should(something)something.should通常是一样的。但是您使用了should.equal,docs没有提到它与其他方法的等价性。它就是复本 node.js assert.equal

为什么添加(‘1’,'1').should.equal('2')不通过?

因为docs明确表示它在内部使用===。

为什么应该产生不同结果的两种用法?

因为这是不同的方法,没有人说它应该是平等的。

为什么当should.equals和assert.equals有不同的行为时,他们会说它们是相同的?

代码语言:javascript
运行
复制
$ node
> var should = require('.')
undefined
> var assert = require('assert')
undefined
> var add = function(a, b) {
...   if (isNaN(a) || isNaN(b)) {
.....     throw new Error('One of the arguments is not a number');
.....   }
...   return +a + +b
... };
undefined
> should.equal(add('1', '1'), '2');
undefined
> assert.equal(add('1', '1'), '2');
undefined

因此,为了澄清您的错误:在should.js中存在与assert.equal相同的should.equal(a, b)。也存在something.should.equal(other),它在内部使用=== (因为存在.eql可以进行深度相等的检查),should(somethng).equal(other)也与something.should.equal(other)相同(但不适用于标准包装器)。

希望它能表明这一点。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35833999

复制
相关文章

相似问题

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