我一直在倾斜一些RoR,当我进入TDD时,东西开始变得更加复杂。在我的应用程序的某些时候,我认为最好在真实数据上运行我的测试。
在网上搜索时,我发现测试不是为了在真实数据上运行,而是在样本数据上运行。但我不能同意这一点。
让我的应用程序使用别名系统。因此,当您访问随机URL时,它会找出该片段所需的内容并重定向到正确的规范URL。让我们补充一点,别名字典存储在某些模型中。我们如何测试那些字典呢?每个别名/关键字的硬代码规范文件?
我已经意识到的前两件事情,但非常不确定,是:
我能想到的最好的解决方案,就像我的新手一样,我可以在spec/support
文件夹中创建一些类,并在我的工厂内调用它们以获得真实的数据。这些类有我的真实数据库信息的简短样本,嵌套,所以我的测试可以“真实”。
专业人士可以提出什么改进建议?
答案 0 :(得分:0)
我想您可能想要构建一个seeds.rb文件来填充您的数据库。这通常用于初始化开发数据库,以便可以在您的应用程序中使用(并在rails控制台中查询),但您可以使用它来为您的测试数据库as described in this answer设定种子。
答案 1 :(得分:0)
您当然不应该使用开发数据库进行测试。您可以为测试数据库设定种子,也可以创建反映各种方案的工厂。
FactoryGirl对我的测试数据库进行了规则,所以我不能选择填充它。
您可以使用多个工厂来表示业务实体,具体取决于测试的方案。 FactoryGirl允许您嵌套工厂,从而简化了这一过程。您可以使用一组基本有效属性定义工厂,并在单元测试中使用它。对于集成(功能)测试,您可以使用嵌套工厂扩展基本属性以实现特定方案。您可以根据需要拥有这些特定于实现的工厂的多种变体。