【问题标题】:Using both webrat and capybara together同时使用 webrat 和 capybara
【发布时间】:2011-08-26 22:31:30
【问题描述】:

我一直在使用 Capybara 进行集成/请求测试,但刚刚意识到我不能用它进行视图测试。

This SO answer建议Webrat和Capybara可以串联使用;但RSpec docs 建议必须在两者之间进行选择。 Here's another github thread 表明 webrat 可用于视图,而 capybara 可用于集成。

我发现如果我在我的 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 互相喜欢的最好方法是什么(如果有的话?)?

【问题讨论】:

  • 我遇到了同样的问题。不过我必须说,一个月前我在另一个项目上一起使用没有问题。似乎不再起作用了。另一件事,我尝试将 capybara 更新为 1.0.0.beta1。我只是收到不同的错误消息。
  • 我已经放弃了,刚开始在没有 webrat 的情况下使用 capybara。我现在使用 capybara 的集成测试方法以一种迂回的方式测试我的观点 - 绝对不理想,但会做。我相信有办法让他们一起工作,但我们希望有人能给出一个好的答案!
  • 快速提问,您如何在控制器中使用 capybara 测试放置和删除操作?它似乎只有一个只能发出 GET 请求的“访问”操作?
  • @duckyfuzz:尝试访问whatever_path, :put, {'key' => 'value'} 并访问whatever_path, :delete
  • @Tyler:我还没有机会测试你的建议,但我不久前就这个问题有一个悬而未决的问题,所以也许你想在那里发布你的建议,如果我可以让它工作我会接受你的回答吗? stackoverflow.com/questions/5908216/…

标签: ruby-on-rails unit-testing rspec capybara webrat


【解决方案1】:

通常没有理由同时使用 Webrat 和 Capybara。选择一个(可能是水豚)。视图测试是个坏主意,通常不需要;通常,您的集成测试应该涵盖该领域。

换句话说,修正你的测试策略,问题就会消失。

【讨论】:

  • 另外,尽量避免使用 RSpec 进行面向用户的测试。黄瓜在这方面要好得多。
【解决方案2】:

总的来说,我同意 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 运行您的水豚专用测试套件或通过cucumber -p webrat 运行您的旧版 Webrat 功能。

不理想,但对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    相关资源
    最近更新 更多