用黄瓜/ MongoDB描述子对象
问题描述:
好的,总黄瓜新手在这里,所以请温柔。作为学习Ruby/Cucumber/MongoDB努力,我正在建立一个简单的联系人管理器。我有一个Person(父)模型和已经能够编写一个简单的测试如下:用黄瓜/ MongoDB描述子对象
Scenario: Show people
Given the following person exists
| firstname | lastname |
| Bob | Jones |
When I am on the home page
Then I should see "Bob"
到目前为止好....但是现在我加入的“地址”的数组子对象它...现在问题是上面的测试失败....我'认为'这是因为我在上面的测试中没有正确描述我的表,因为它现在也有一个地址属性。
我的问题是我如何正确地编写上述测试,如果我想检查子对象?
我的两个类遵循:
class Person < MongoBase
key :firstname, String, :required=>true
key :lastname, String, :required=>true
many :addresses
end
class Address <MongoBase
key :person_id, ObjectId
key :street, String
key :city, String
key :State, String
key :Zip, String
belongs_to :person
end
提前感谢!
更新:原始测试现在通过,但我仍然无法弄清楚如何设置测试,以便鲍勃琼斯有一个孩子的地址。
答
我认为1,000,000美元是“什么是失败”?另外 - 如果你使用的是MongoMapper而不是你希望明确地将Address设置为EmbeddedDocument(包括MongoMapper :: EmbeddedDocument) - 这很可能是你失败后的原因(我不认为)你可以使用很多:XXX与一个常规的MongoMapper :: Document。
Pfft ...就像一个错误消息曾经帮助过任何人......大声笑 这是不确定的contast地址...哪些朗读帮助我找出...在我的人课上我的许多人:地址是错的......它应该被复数化......所以现在最初的测试通过了...但我留下了关于如何写黄瓜测试的问题,以便Bob Jones有一个地址。 – Webjedi 2010-02-17 15:46:32
Ahhh - 在step类中将表设置为散列(表是Cuke传递的参数),并在散列上运行每个散列,以将数据加载到测试数据库。 So: table.hashes.each do | hash | p = Person.new(hash) p.addresses 2010-02-17 18:58:28
所以在那个例子中,我将指定在步骤中创建地址,而不是在Cuke ...我猜这会奏效......无论如何,都无法将我的头包裹在如何绘制管道。 :) – Webjedi 2010-02-17 19:03:08