根据页面结构或REST操作组织集成测试?

时间:2012-11-10 16:37:57

标签: ruby-on-rails rspec

我对如何组织集成测试感到有些困惑。现在,它们是根据页面结构组织的:

post_pages_spec.rb:

require 'spec_helper'

describe "Post pages" do

  describe "show page" do

    describe "post destruction" do

    end

    describe "edit" do

    end

  end

  describe "post creation" do

  end


end

如您所见,删除和编辑位于show动作中,因为它们出现在显示页面中。

这是组织它们的另一种方式(基于REST操作):

post_pages_spec.rb:

require 'spec_helper'

describe "Post pages" do

  describe "show page" do

  end

  describe "post destruction" do

  end

  describe "post creation" do

  end

  describe "edit" do

  end
end

哪种结构更清晰,更易于维护?

1 个答案:

答案 0 :(得分:2)

假设您真的在询问集成测试而不是控制器测试,我喜欢从用户角度和用户类型组织集成测试。防爆。一个用于注册用户的文件,一个用于管理员的文件,一个用于未注册用户的文件等,并且必要时。

这样做的理由是,我发现,作为一般的启发式方法,相同的用户类型具有相同的特征先决条件,因此非常适合。例如,观看帖子的注册用户可能有很多关注CRUD现有帖子内容的场景,其中非注册用户可能具有关注帖子推荐的场景。由于这些不同的视角可能会有不同的设置和拆卸,因此它们也可能更容易(即干燥等)单独维护。

另外,它看起来不错:) Ex:

describe "Registered User" do
  context 'creating a Post' do
    it "succeeds given all fields are filled out"
    it "displays errors to the author if a field is missing"
  end
end