2

我正在使用 Capybara 和 RSpec 来检查我的 Rails 项目。

当表单字段未正确填写时,我正在测试错误。这是表格(使用haml):

= form_tag '/objects', :class => 'objects-form' do
    %ul
        %li= select_tag 'object', options_for_select([['Select an object', ''], ['Car', 'CAR'], ['Keys', 'KEYS'], ['Ambrella', 'AMBRELLA']]), :id => 'select-object'
        %li= text_field_tag :quantity, nil
        %li= submit_tag 'Buy', :id => 'object-submit'

当发生错误时(在这种情况下,不是选择对象,而是选择数量),会显示一条 flash 消息(带有 .flash-error 类名):

- flash.each do |type, msg|
    = content_tag :div, msg, :class => "flash-#{type}", :id => 'flash-msg'

所以,这是我的水豚测试:

it 'Should return error when no object selected' do
    within 'form.objects-form' do
        fill_in 'quantity', :with => '1'
        click_button 'object-submit'
        current_path.should == objects_path
        save_and_open_page
        page.should have_css 'div.flash-error'
    end
end

但我收到以下 Capybara 错误:

Failure/Error: page.should have_css 'div.flash-error'
   expected #has_css?("div.flash-error") to return true, got false

打开的页面(使用save_and_open_page)显示带有适当 div 的错误消息:

div#flash-msg.flash-error

我正在使用最新版本的 Capybara(因为 Stackoverflow 上的许多类似问题都与 Capybara 的旧版本相关)使用gem 'capybara', :git => 'https://github.com/jnicklas/capybara.git'

任何想法?预先感谢。

编辑:

更正了 Alex 检测到的 Capybara 代码的输入错误。

4

1 回答 1

0

问题是您在 capybara 中使用的选择器是,div#flash-error但您的 div 是div#flash-msg.flash-error或更简单div.flash-error

于 2013-07-13T07:04:06.370 回答