我一直在使用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.最好的方法是什么(如果有的话)?为了让韦布拉特和水豚喜欢上对方?
发布于 2011-06-06 22:46:29
通常没有理由同时使用Webrat和Capybara。选择一个(可能是Capybara)。视图测试是一个糟糕的想法,通常不应该是必需的;通常,您的集成测试应该涵盖这一点。
换句话说,修复你的测试策略,问题就会消失。
发布于 2011-11-26 01:03:34
总的来说,我同意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来运行仅限水豚的测试套件或用于遗留Webrat特性的cucumber -p webrat。
不是很理想,但它对我很有效。
https://stackoverflow.com/questions/6026173
复制相似问题