不能让对象平等

时间:2016-07-04 13:56:38

标签: javascript unit-testing mocha supertest

我从Mocha收到以下失败消息:

def appealer_params
  params.require(:appealer).permit(:first_name, :last_name)
end

这是我的测试代码:

def create
  @appeal = Appeal.new(appeal_params)
  if appealer_params.present?
    appealer = Appealer.create(appealer_params)      
    @appeal.appealer = appealer
  end

  if @appeal.save
    respond_with @appeal
  else
    respond_with {:error}
  end
end

这是我的实际代码:

Uncaught AssertionError: expected Object { name: 'John Doe' } to be Object { name: 'John Doe' }
+ expected - actual

但是我不应该从Mocha收到失败消息,因为两个对象都是一样的。但不知怎的,他们并非如此,我真的不知道我做错了什么。

我已经检查了两个对象的间距,所以不应该这样。

2 个答案:

答案 0 :(得分:1)

2个对象即使数据相同也不能相同,因为它们作为2种不同的存在方式存储在内存中

var data = {
 name: 'piyush'};

var data1 = {
name: 'piyush'
}

data == data1 // false

答案 1 :(得分:0)

如果两个对象的键具有相同的顺序/具有相同的结构,则可以使用JSON.stringify然后比较字符串。这只适用于所有键都是原始值的情况,如果有另一个对象作为键之一,则需要更复杂的东西。