我试图测试实例变量的内容是否存在两个哈希值及其内容,我的代码如下所示。 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
答案 0 :(得分:1)
我相信您正在尝试检查<{1}}对象内的@orders
的值。 Rspec不知道restaurant1
是什么,也无法猜测。你应该通过测试实际值来检查它(我假设@orders
可用)。
此外,您忘记为地图中的最后一个元素(restaurant1.order
)指定密钥,这会导致语法错误:
volume