我应该测试模型之间的关联吗?

Fli*_*lip 6 ruby unit-testing ruby-on-rails minitest rails-activerecord

我应该为两个模型之间的关联编写测试吗?

我刚刚在我的第一个Rails项目中发现了这个代码,这似乎不正确,因为没有关联导致错误而不是失败.那么我将如何以及在何处正确测试它们?

require 'test_helper'

class VocabTest < ActiveSupport::TestCase

  test "Must have 'belongs_to user' association" do
    assert @vocab.user
  end
end
Run Code Online (Sandbox Code Playgroud)

mar*_*rgo 8

我倾向于测试模型之间的关联,以确认我已正确完成所有设置.测试关联的一种非常简单的方法是使用shoulda.

您也可以使您的测试文件更具可读性

require 'test_helper'

class VocabTest < ActiveSupport::TestCase

  test "associations" do
    should belong_to :user
  end

end
Run Code Online (Sandbox Code Playgroud)


Dav*_*uth 5

不,您不需要专门进行单元测试关联,即使您的目标是完全测试您的应用程序(您应该).协会只是实施; 它们的存在是为了支持行为,并且测试该行为总是完全测试关联的存在.关联的单独单元测试不会增加任何值.

如果您正在练习测试驱动的开发并且在实现需要关联的某些行为的过程中,您可能会发现为关联编写单元测试,将其传递并返回以完成对行为的测试会很有帮助.我通常不会发现我需要这个,因为在Rails中添加与现有模型的关联,甚至添加新模型都非常简单,但有些人喜欢中间测试的支持.但是,一旦行为被实现,我将删除关联的测试,因为我将进行任何冗余测试.

我在这个答案答案中写了更多关于直接测试ActiveRecord模型各个方面的用处.