【发布时间】:2013-05-07 15:04:01
【问题描述】:
我一直在学习 Rails 最佳实践并学习为我的 Rails 应用程序编写好的测试。
我目前正在使用 rspec + FactoryGirl 进行测试。
有一段时间我在编写基本模型和控制器规范,通常只需要设置几个模型和关联。
现在我有一个具有复杂算法的模型,该模型基于不同的模型进行大量计算。
为了测试这种方法,我几乎需要我的应用程序的所有模型都存在于测试数据库中,并且它们之间建立了所有关联关系。
现在事情变得势不可挡。我需要跟踪所有工厂是否正确地相互引用。我还需要验证是否所有工厂都已正确创建。 在我的 before(:each) 方法中还有很多 FactoryGirl.create(:model) 调用。
我有一种感觉,我做的事情不对。解决这种情况的最佳方法是什么?大多数书籍和示例仅涵盖非常基本的案例。
欢迎任何指针的想法和方法。(希望这个问题的范围不要太宽)
示例:
我的应用程序有多个projects。每个项目有_many indexes、companies 和mastertags。每个公司都有_manychannels。每个频道都有多个channel_tag_weights 跨越不同的mastertags。每个频道也有_many Rawdatas。
这可能是所需的最低模型设置示例。
【问题讨论】:
-
一些示例代码会有所帮助
-
更新了一般场景。
-
您可以生成辅助方法,在其中分离您的工厂女孩代码,例如 def generate_project_with_indexes ... end def generate_project_with_companies .. end 等等。通过这个你最小化你的代码..但是如果你的应用程序增长,你的测试代码也会增长,这是正常的。所以你没有做错事
标签: ruby-on-rails unit-testing rspec factory-bot