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

时间:2016-04-21 13:25:51

标签: ruby-on-rails ruby unit-testing rails-activerecord minitest

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

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

require 'test_helper'

class VocabTest < ActiveSupport::TestCase

  test "Must have 'belongs_to user' association" do
    assert @vocab.user
  end
end

2 个答案:

答案 0 :(得分:8)

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

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

require 'test_helper'

class VocabTest < ActiveSupport::TestCase

  test "associations" do
    should belong_to :user
  end

end

答案 1 :(得分:5)

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

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

我在this answerthis answer直接测试ActiveRecord模型的各个方面的用处上写了更多信息。