不能让对象相等
Can't get objects to be equal
我从 Mocha 收到以下失败消息:
Uncaught AssertionError: expected Object { name: 'John Doe' } to be Object { name: 'John Doe' }
+ expected - actual
这是我的测试代码:
describe("A user gets registered", function () {
it('should create a SINGLE user on /api/register POST', function (done) {
//calling REGISTER api
server
.post('/api/register')
.send({
name: "John Doe",
username: "john",
password: "open"
})
.expect("Content-type", /json/)
.expect(200)
.end(function (err, res) {
var data = {
"name": "John Doe"
};
res.status.should.equal(200);
res.body.should.equal(data);
done();
});
});
});
这是我的实际代码:
router.post('/', function (req, res) {
var data = {name: 'John Doe'};
res.status(200).json(data);
});
module.exports = router;
但是我不应该从 Mocha 收到失败消息,因为这两个对象完全相同。但不知何故他们不是,所以我真的不知道我做错了什么。
我已经检查了两个对象的间距,所以不应该是这种情况。
即使数据相同,2 个对象也不能相同,因为它们作为 2 个不同的实体存储在内存中
var data = {
name: 'piyush'};
var data1 = {
name: 'piyush'
}
data == data1 //假
如果两个对象的键顺序相同/结构相同,您可以使用JSON.stringify然后比较字符串。这仅在所有键都是原始值的情况下才有效,但是,如果有另一个对象作为键之一,您将需要更复杂的东西。
我从 Mocha 收到以下失败消息:
Uncaught AssertionError: expected Object { name: 'John Doe' } to be Object { name: 'John Doe' }
+ expected - actual
这是我的测试代码:
describe("A user gets registered", function () {
it('should create a SINGLE user on /api/register POST', function (done) {
//calling REGISTER api
server
.post('/api/register')
.send({
name: "John Doe",
username: "john",
password: "open"
})
.expect("Content-type", /json/)
.expect(200)
.end(function (err, res) {
var data = {
"name": "John Doe"
};
res.status.should.equal(200);
res.body.should.equal(data);
done();
});
});
});
这是我的实际代码:
router.post('/', function (req, res) {
var data = {name: 'John Doe'};
res.status(200).json(data);
});
module.exports = router;
但是我不应该从 Mocha 收到失败消息,因为这两个对象完全相同。但不知何故他们不是,所以我真的不知道我做错了什么。
我已经检查了两个对象的间距,所以不应该是这种情况。
即使数据相同,2 个对象也不能相同,因为它们作为 2 个不同的实体存储在内存中
var data = {
name: 'piyush'};
var data1 = {
name: 'piyush'
}
data == data1 //假
如果两个对象的键顺序相同/结构相同,您可以使用JSON.stringify然后比较字符串。这仅在所有键都是原始值的情况下才有效,但是,如果有另一个对象作为键之一,您将需要更复杂的东西。