【发布时间】:2013-09-06 01:24:32
【问题描述】:
我在 Rails 中有三个页面都显示相同的标题,因此需要完全相同的集成测试。
与其重复我自己并编写看起来几乎完全相同的单独测试,这里最好的方法是什么?我尝试将共享断言放入模块中,但未能成功将其加载到每个测试场景中。
温德里:
class IntegrationTest
describe "page one" do
before { visit page_one_path }
it "should have a home page link" do
page.find_link "Home"
end
end
describe "page two" do
before { visit page_two_path }
it "should have a home page link" do
page.find_link "Home"
end
end
describe "page three" do
before { visit page_three_path }
it "should have a home page link" do
page.find_link "Home"
end
end
end
尝试烘干失败...
模块:
/lib/tests/shared_test.rb
module SharedTest
def test_header
it "should have a home page link" do
page.find_link "Home"
end
end
end
测试:
class IntegrationTest
include SharedTest
describe "page one" do
before { visit page_one_path }
test_header
end
describe "page two" do
before { visit page_two_path }
test_header
end
describe "page three" do
before { visit page_three_path }
test_header
end
end
我还没有完全弄清楚如何编写模块,所以这不起作用也就不足为奇了。有人能指出我正确的方向吗?
【问题讨论】:
-
首先,我不确定是否有必要对每个控制器操作进行测试,除非您不断更改布局(即便如此,也可能有更简单的测试方法)。对于在 MiniTest 中使用共享示例的问题的更一般的答案,docs 建议:“如果您确实想要继承,请使用 minitest/unit。您可以随意混合和匹配断言和期望。”
标签: ruby-on-rails ruby ruby-on-rails-4 minitest