摩卡假阴性结果

mocha false negative result

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

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 断言库。