1

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

真实数据与样本数据

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

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

坚持真实数据

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

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

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

周围的专业人士可以建议改进它吗?

4

2 回答 2

0

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

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

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

于 2014-02-28T01:04:06.563 回答
0

我认为您可能想研究构建一个 seed.rb 文件来填充您的数据库。这通常用于初始化开发数据库,​​以便它可以在您的应用程序中使用(并在 rails 控制台中查询),但您可以使用它来为您的测试数据库播种,如本答案中所述

于 2014-02-28T00:17:23.997 回答