javascript - Mocha 假阴性结果

标签 javascript testing mocha.js

我正在测试一个根据传入的用户名和密码生成凭据的函数:

generateCredentials(username, password) {
  return {
    username: username,
    password: password
  };
}

这是我的测试:

describe('#generateCredentials(username, password)', function() {
    it('creates a JSON object with the passed in arguments', function() {

      var creds = generateCredentials('user', 'pass');

      var expectedCreds =  { username: 'user', password: 'pass' };

      expect(creds).to.equal(expectedCreds);
    });
  });

我得到一个错误:

AssertionError: expected { username: 'user', password: 'pass' } to equal { username: 'user', password: 'pass' }

我没有发现预期返回的内容和实际返回的内容有任何区别。我 console.log creds & expectedCreds 并且它们是相同的。为什么 mocha 会抛出错误?

最佳答案

expect(...).to.equal 测试对象是否严格相等(类似于 === 运算符)。在具有相同属性和值的 javascript 对象中是不相等的:

({ prop: 'value' }) === ({ prop: 'value' }); // false

您可以使用 expect(...).to.eql 来查找对象是否深度等于:

expect(creds).to.eql(expectedCreds);

注意:我假设你使用的是 chai 断言库。

关于javascript - Mocha 假阴性结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36141230/

相关文章:

javascript - 使用 JavaScript 中的 Firebase 云函数更新标签栏项目徽章的 ios 静默推送通知的有效负载

python - 针对 Python Web 开发的 TDD 资源

mocha.js - 如何使用 chai assert 获取 mocha 以报告文件/行号?

node.js - Mocha 列表只跳过测试

javascript - 如何使用 javascript onclick() 获取元素的属性值?

javascript - Paho 客户端 Web 套接字找不到 mqtt

javascript - 从 OpenLayers 中的集群获取功能?

python - Python模拟中的模拟属性?

ruby-on-rails - 逐行编写匹配类似配置的代码的测试有什么用?

javascript - 测试调用外部 api 的 Vuex 操作