【问题标题】:What's wrong with Rspec, FactoryGirl and real sample data?Rspec、FactoryGirl 和真实样本数据有什么问题?
【发布时间】:2012-11-21 16:29:28
【问题描述】:

我一直在学习一些 RoR,当我开始使用 TDD 时,事情开始变得更加复杂。在我的应用程序的某个时刻,我认为对真实数据运行测试会更好。

真实数据与样本数据

在网上搜索,我发现测试并不是要运行真实数据,而是要运行样本数据。但是我不能同意。

假设我的应用有一个别名系统。因此,当您访问随机 url 时,它会确定该片段想要什么并重定向到正确的规范 url。让我们补充一下,别名字典存储在某些模型中。我们将如何测试那本词典?每个别名/关键字的硬代码规范文件?

坚持真实数据

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

  1. Rspec 测试环境不会访问开发模型的数据。
  2. FactoryGirl 管理我的测试数据库,因此我不能选择填充它。

作为一个完整的新手,我能想到的最佳解决方案是,我可以在spec/support 文件夹中创建一些类并在我的工厂中调用它们以获取真实数据。这些类有一个我真实数据库信息的简短样本,嵌套,所以我的测试可以“真实”。

周围的专业人士可以提出哪些改进建议?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      FactoryGirl 管理我的测试数据库,因此我不能选择填充它。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多