Rspec,FactoryGirl和真实样本数据有什么问题?

时间:2012-11-21 16:29:28

标签: ruby-on-rails rspec factory-bot

我一直在倾斜一些RoR,当我进入TDD时,东西开始变得更加复杂。在我的应用程序的某些时候,我认为最好在真实数据上运行我的测试。

实际数据与样本数据

在网上搜索时,我发现测试不是为了在真实数据上运行,而是在样本数据上运行。但我不能同意这一点。

让我的应用程序使用别名系统。因此,当您访问随机URL时,它会找出该片段所需的内容并重定向到正确的规范URL。让我们补充一点,别名字典存储在某些模型中。我们如何测试那些字典呢?每个别名/关键字的硬代码规范文件?

坚持使用真实数据

我已经意识到的前两件事情,但非常不确定,是:

  1. Rspec测试环境无法访问开发模型的数据。
  2. FactoryGirl对我的测试数据库进行了规则,因此我不能选择填充它。
  3. 我能想到的最好的解决方案,就像我的新手一样,我可以在spec/support文件夹中创建一些类,并在我的工厂内调用它们以获得真实的数据。这些类有我的真实数据库信息的简短样本,嵌套,所以我的测试可以“真实”。

    专业人士可以提出什么改进建议?

2 个答案:

答案 0 :(得分:0)

我想您可能想要构建一个seeds.rb文件来填充您的数据库。这通常用于初始化开发数据库,​​以便可以在您的应用程序中使用(并在rails控制台中查询),但您可以使用它来为您的测试数据库as described in this answer设定种子。

答案 1 :(得分:0)

您当然不应该使用开发数据库进行测试。您可以为测试数据库设定种子,也可以创建反映各种方案的工厂。

FactoryGirl对我的测试数据库进行了规则,所以我不能选择填充它。

您可以使用多个工厂来表示业务实体,具体取决于测试的方案。 FactoryGirl允许您嵌套工厂,从而简化了这一过程。您可以使用一组基本有效属性定义工厂,并在单元测试中使用它。对于集成(功能)测试,您可以使用嵌套工厂扩展基本属性以实现特定方案。您可以根据需要拥有这些特定于实现的工厂的多种变体。