不能让对象相等

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然后比较字符串。这仅在所有键都是原始值的情况下才有效,但是,如果有另一个对象作为键之一,您将需要更复杂的东西。