如何将has_many属性添加到黄瓜模型中

时间:2014-02-07 07:27:56

标签: ruby-on-rails cucumber

这可能是一个非常简单的问题,但我对黄瓜来说相对较新。

我有一个ruby-on-rails网络应用程序,我正在使用黄瓜进行测试。

在要素文件中,我需要生成一个具有多个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 个答案:

答案 0 :(得分:2)

在Rails中,Cucumber通常用于BDD。您的断言通常是网页上的项目。黄瓜通常不用于制作单元级断言。对于单元级别测试,我建议您查看rspecrspec-rails

你坚持“我无法弄清楚如何用has_many属性填充模型”,但这是因为你试图解决错误的问题(在我看来)。

查看示例here。如您所见,它们是非常高级的场景。没有什么可以试图描述底层架构。

答案 1 :(得分: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" |

......等等!