如何为用户确定的内容编写功能测试?

时间:2015-10-30 13:37:01

标签: ruby-on-rails testing rspec tdd bdd

让我们说我正在处理我希望添加到我正在开发的应用程序中的评论功能。

我可以通过功能测试来测试它:

scenario "they can comment on a book" do
  visit book_url(book)

  fill_in "Name", with: "John"
  fill_in "Comment", with: "This is a comment."
  click_button "Add Comment"

  expect(current_path).to eq(book_path(book))
  expect(page).to have_text("Your comment is successfully added")
  expect(page).to have_text(Comment.last.content)
end

但是,如果我还添加了一项功能,用户可以决定评论是否需要批准。如果它不需要批准,那么上述测试将起作用。但是,如果用户更改设置并在发布之前确定评论需要获得批准,则此测试将无效(此设置可通过管理面板进行调整)。

编写涵盖所有这些场景的测试的好方法是什么?

1 个答案:

答案 0 :(得分:0)

您是否考虑过针对每个案例进行单独测试?即测试不需要批准的情况与需要批准的情况分开。也许是这样的:

feature "making comments when approval is not required" do
  background do
      // turn off the "approval required" setting
  end

  scenario "adding a comment" do
      // assertions
  end
end

feature "making comments when approval is required" do
  background do
      // turn on the "approval required" setting
  end

  scenario "adding a comment" do
    // assertions
  end
end

请注意,我没有使用Ruby或RSpec - 只是做了一些快速搜索 - 所以这可能不是最合适的方式来做你想要的。

编辑:或类似的东西

feature "making comments" do
  scenario "when approval is required" do
    // require approvals
    // assertions
  end

  scenario "when approval is not required" do
    // turn off approval requirement
    // assertions
  end
end