我正在测试一个根据传入的用户名和密码生成凭据的函数:
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/