我一直在使用Capybara进行集成/请求测试,但刚刚意识到我无法使用它进行视图测试。
This SO answer表示Webrat和Capybara可以串联使用;但RSpec docs建议必须在两者之间做出选择。 Here's another github thread表明webrat可以用于视图和水豚的整合。
我发现如果我在我的gemfile中包含Webrat,我可以使用webrat查看没有问题的视图,但我的水豚风格的集成测试不再有效。具体来说,我通过以下简单示例得到错误:
it "should have a Home page at '/'" do
visit '/'
page.should have_selector('title', :content => "Home page")
end
我收到错误:
No response yet. Request a page first.
让webrat和capybara相互喜欢的最佳方式(如果有的话)是什么?
答案 0 :(得分:11)
通常没有理由同时使用Webrat和Capybara。选一个(可能是水豚)。查看测试是一个坏主意,一般不应该是必要的;通常,您的集成测试应涵盖这一点。
换句话说,修复您的测试策略,问题就会消失。
答案 1 :(得分:6)
总的来说,我同意Marnen关于“只选择其中一个,可能是Capybara”,但是使用它们的一个可能原因是逐渐迁移。
说,你有一个大型的测试套件,你正在将它迁移到Capybara,但是你想让你的一些旧测试保持“Webrat驱动”一段时间。
虽然,我没有为这种情况找到理想的解决方案,但这就是我所做的:
# features/support/env.rb
...
if ENV['WITH_WEBRAT'].nil?
require 'capybara/rails'
require 'capybara/cucumber'
...
else
require 'webrat'
...
end
...
# config/cucumber.yml
...
default: --profile capybara
capybara: <% std_opts %> --tags ~@webrat features
webrat: <% std_opts %> --tags @webrat features WITH_WEBRAT=1
...
# features/webrat.feature
@webrat
...
# features/capybara.feature
...
现在,您可以cucumber
运行仅限capybara的测试套件,或cucumber -p webrat
执行旧版Webrat功能。
不理想,但它对我有用。