Rspec测试数组中哈希的内容

时间:2014-06-15 12:00:14

标签: ruby rspec

我试图测试实例变量的内容是否存在两个哈希值及其内容,我的代码如下所示。 1)rspec错误消息是由于我的容器'在测试中; ([{}]),我在这做什么错了? 2)我是否会首先以正确的方式测试分配给实例变量的值?提前谢谢。

下面的红宝石代码

def order_received(customer, name, volume)
  if @menu.any? { |h| h[:name] == name}
    @orders << {customer: customer, name: name, volume: volume}
    else
    customer.not_on_menu(name)
  end
end


def place_order(restaurant, name, volume)
  restaurant.order_received(self, name, volume)
end

下面的rspec测试

it 'confirm order by giving the list of dishes, their quantities, and the total price' do 

  restaurant1 = Restaurant.new
  customer1 = Customer.new
  restaurant1.create_dish('coffee', 2)
  restaurant1.create_dish('tea', 2)
  customer1.place_order(restaurant1, 'tea', 2)
  customer1.place_order(restaurant1, 'coffee', 3)

  expect(@orders).to eq([{customer: customer1, name: 'tea', 2},{customer: customer1, name: 'coffee', 3}])

end

1 个答案:

答案 0 :(得分:1)

我相信您正在尝试检查<{1}}对象内的@orders 的值。 Rspec不知道restaurant1是什么,也无法猜测。你应该通过测试实际值来检查它(我假设@orders可用)。

此外,您忘记为地图中的最后一个元素(restaurant1.order)指定密钥,这会导致语法错误:

volume