我应该为两个模型之间的关联编写测试吗?
我刚刚在我的第一个Rails项目中发现了这个代码,这似乎不正确,因为没有关联导致错误而不是失败.
那么我将如何以及在何处正确测试它们?
require 'test_helper' class VocabTest < ActiveSupport::TestCase test "Must have 'belongs_to user' association" do assert @vocab.user end end
解决方法
不,您不需要专门进行单元测试关联,即使您的目标是完全测试您的应用程序(您应该).协会只是实施;它们的存在是为了支持行为,并且测试该行为总是完全测试关联的存在.关联的单独单元测试不会增加任何值.
如果您正在练习测试驱动的开发并且在实现需要关联的某些行为的过程中,您可能会发现为关联编写单元测试,将其传递并返回以完成对行为的测试会很有帮助.我通常不会发现我需要这个,因为在Rails中添加与现有模型的关联,甚至添加新模型都非常简单,但有些人喜欢中间测试的支持.但是,一旦行为被实现,我将删除关联的测试,因为我将进行任何冗余测试.
我在this answer和this answer中直接测试了ActiveRecord模型的各个方面的有用性.