Ruby on rails 3 Capybara和Ajax测试不起作用

Ruby on rails 3 Capybara和Ajax测试不起作用,ruby-on-rails-3,rspec2,capybara,Ruby On Rails 3,Rspec2,Capybara,我使用ajax提交表单。当表单提交出现错误时,将使用ajax、jquery再次呈现表单 我试图用水豚和Rspec测试这种行为,如下所示: 描述“电路板创建失败”,类型=>:请求do it "should not create a birthday board" do Capybara.default_wait_time = 5 lambda do visit root_path fill_

我使用ajax提交表单。当表单提交出现错误时,将使用ajax、jquery再次呈现表单

我试图用水豚和Rspec测试这种行为,如下所示:

描述“电路板创建失败”,类型=>:请求do

      it "should not create a birthday board" do
        Capybara.default_wait_time = 5
            lambda do
              visit root_path
              fill_in "Name",      :with => ""
              select('1967', :from => "board_birthday_1i" )
              select('October',   :from => "board_birthday_2i" )
              select('30',   :from => "board_birthday_3i" )
              click_button("Start the surprise")
              page.should have_selector('div#error_explanation')
              page.find_field('Name').value
            end.should_not change(Board, :count)
      end
    end
结果如下:

  Failure/Error: page.should have_selector('div#error_explanation')
       expected following output to contain a <div#error_explanation/> tag:
Failure/Error:page.应该有_选择器('div#Error _explauration'))
预期以下输出包含标记:
但事实上,我在页面上有一个错误解释div

为什么这个测试失败了


提前谢谢。

您是否尝试过等待几秒钟,直到收到响应

在之前添加睡眠(3)

page.should have_selector('div#error_explanation')
再次测试。
这可能会有所帮助。

您是否在某处添加了:js=>true选项以便执行ajax?我的gem文件中同时包含了Capybara和webrat。我认为是webrat和水豚之间的冲突导致了这个问题