2014-02-07 49 views
0

這可能是一個可笑的簡單問題,但我對黃瓜相對較新。如何將has_many屬性添加到黃瓜模型中

我有一個ruby-on-rails web應用程序,我正在使用黃瓜來測試。

在功能文件中,我需要生成一個模型has_many幾個屬性。

而且我使用的陣法像這樣創建模型...

And the following my_models exist: 
| name  | date  | belongs_to_model      | etc | 
| my_model | 2014-02-09 | belongs_to_model: "belongs_to_model1" | ... | 

的問題是,我無法弄清楚如何填充的has_many屬性模型。顯然,它必須作爲某種陣列來完成,但我不知道如何。

有什麼建議嗎?

謝謝!

回答

2

In Rails黃瓜通常用於BDD。您的斷言通常是網頁上的項目。黃瓜通常不用於製作單元級別的斷言。對於單元級別的測試,我建議你看看rspecrspec-rails

你卡在「我無法弄清楚如何使用has_many屬性填充模型」,但那是因爲你試圖解決錯誤的問題(在我看來)。

結帳示例here。正如你所看到的,它們是非常高層次的場景。沒有什麼是試圖描述底層架構。

+0

謝謝 - 我很欣賞反饋。很可能我的一些術語是錯誤的。我看了一些例子 - 看起來這些都是嚴格意義上的縮短重複的方法。我猜如果我能以更一般的方式提出我的問題 - 在我的.features文件中,只要另一個模型嚴格爲一對一關係,我就可以將一個變量或另一個模型放入模型中。我猜想還有一種方法可以添加一系列具有一對多關係的模型? –

+0

@TimMitchell你仍然在描述大多數黃瓜不適用的用法。 「模型」,「變量」,「一對一關係」,「數組」,「一對多」等詞。這些描述都不應該在Gherkin中。這些單詞/場景應該在單元測試上。你在Gherkin中的功能步驟就像'給定一個用戶''當用戶添加博客帖子','然後創建博客文章'。非常頂級,而在下面,我們應該假設用戶有許多博客文章。專注於描述功能,而不是體系結構。 – AdamT

+0

好的 - 我認爲也許這只是一個錯誤的交流 - 它可能至少與我的一些命名約定有一點關係。表中的'belongs_to_model'引用並不是指任何嘗試在Ruby模型本身中創建或複製'belongs_to'引用 - 這已經完成了。對my_model的引用也與它在Ruby模型本身中的含義沒有任何關係 - 這正是我在功能文件中將其命名的地方。我想要做的就是自動填充黃瓜文件中的數據。我真的覺得這很簡單。 –

0

我很抱歉 - 我想這個答案太簡單了,我在樹林裏看到森林時遇到了一些麻煩。

假設你有一隻擁有許多綿羊的牧羊人。你有一個shepherd.features文件,旨在通過任何場景來測試這種關係。

在功能方面的文件,你可以創建一個矩陣表填入下面的測試牧羊人:

Given the following shepherds exist: 
     | shepherd | name  | 
     | shepherd1 | shep1name | 
     | shepherd2 | shep2name | 
     | shepherd3 | shep3name | 
     | shepherd4 | shep4name | 

在另一個矩陣表,你可以創建一個矩陣表填充試驗羊的列表。但是,您也想指定每隻綿羊屬於特定的牧羊人。當然,牧羊人可以有一隻以上的羊(順便說一句 - 這是我的問題的關鍵)。
如果你想shepherd1自己sheep1和sheep3,並shepherd2自己sheep2和sheep4,你只需做到以下幾點:

Given the following sheep exist: 
     | sheep | name  | shepherd | 
     | sheep1 | sheep1name | shepherd1 | 
     | sheep2 | sheep2name | shepherd2 | 
     | sheep3 | sheep3name | shepherd1 | 
     | sheep4 | sheep4name | shepherd4 | 

易Peasy!

現在,假設一個牧羊人不僅可以擁有多隻羊,還可以擁有一隻以上的牧羊人。換句話說,你有一個多對多的關係。在這種情況下,你會有一個名爲shepherd_sheep的連接器表。如果你想指定sheep1由shepherd1和shepherd2共同擁有;而牧羊人1也擁有綿羊3 - 你只會這樣做:

Given the following shepherd_sheep exist: 
    | shepherd_sheep | shepherd    | sheep   | 
    | shepherd_sheep1 | shepherd: "shepherd1" | sheep: "sheep1" | 
    | shepherd_sheep2 | shepherd: "shepherd3" | sheep: "sheep1" | 
    | shepherd_sheep3 | shepherd: "shepherd1" | sheep: "sheep3" | 

...等等!