2010-02-17 67 views
0

好的,总黄瓜新手在这里,所以请温柔。作为学习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 

提前感谢!

更新:原始测试现在通过,但我仍然无法弄清楚如何设置测试,以便鲍勃琼斯有一个孩子的地址。

回答

0

我认为1,000,000美元是“什么是失败”?另外 - 如果你使用的是MongoMapper而不是你希望明确地将Address设置为EmbeddedDocument(包括MongoMapper :: EmbeddedDocument) - 这很可能是你失败后的原因(我不认为)你可以使用很多:XXX与一个常规的MongoMapper :: Document。

+0

Pfft ...就像一个错误消息曾经帮助过任何人......大声笑 这是不确定的contast地址...哪些朗读帮助我找出...在我的人课上我的许多人:地址是错的......它应该被复数化......所以现在最初的测试通过了...但我留下了关于如何写黄瓜测试的问题,以便Bob Jones有一个地址。 – Webjedi 2010-02-17 15:46:32

+0

Ahhh - 在step类中将表设置为散列(表是Cuke传递的参数),并在散列上运行每个散列,以将数据加载到测试数据库。 So: table.hashes.each do | hash | p = Person.new(hash) p.addresses << Address.new(...) p.save end – 2010-02-17 18:58:28

+0

所以在那个例子中,我将指定在步骤中创建地址,而不是在Cuke ...我猜这会奏效......无论如何,都无法将我的头包裹在如何绘制管道。 :) – Webjedi 2010-02-17 19:03:08