0

我正在使用列出的 gem 为我的应用程序编写测试。我找不到如何设置 Capybara 以使用主干(全部为 ajax)
示例测试:

require 'spec_helper' describe "Main" do   describe "GET /" do
    it "displays articles" do
      Article.create!(title:'title',body:'<p>body text</p>')
      visit '/'
      page.should have_content('body text')
    end   
  end 
end

和测试的输出:

Failures:

  1) Main GET / displays articles
     Failure/Error: page.should have_content('body text')
       expected there to be text "body text" in "Loading..."
     # ./spec/features/main_spec.rb:8:in `block (3 levels) in <top (required)>'

“正在加载...”是我的视图模板中的前 ajax 文本...

关键是我现在不想在这个应用程序中使用 Jasmine

4

1 回答 1

3

看起来您正在使用默认的 Rack::Test 驱动程序运行 Capybara,这意味着没有 JavaScript。Rack::Test 正在加载您的应用程序并在 Capybara API 后面伪造一个浏览器 DOM。

您需要使用在真正的 Web 浏览器中运行测试的驱动程序。有几种不同的选择:Selenium 驱动程序随 Capybara 一起在真正的浏览器(通常是 Firefox)中运行您的测试,其他的则在单独的 gem 中实现,例如使用 PhantomJS 和无头 WebKit 浏览器的Poltergeist 。

Capybara自述文件中有关于设置正确驱动程序的说明。您可以通过将选项添加到描述块来切换一组测试以使用支持 JavaScript 的驱动程序js,例如:

describe "Main with JavaScript", :js => true do
  # ...
end
于 2013-03-09T17:49:04.007 回答