2013-04-16 60 views
1
$ruby --version 
ruby 1.9.3dev (2011-09-23 revision 33323) [i686-linux] 

gem 'rails', '3.2.9' 

group :test do 
    gem 'cucumber-rails', require: false 
    gem 'capybara', '~> 2.0.3' 
    gem 'rspec-rails' 
    gem 'database_cleaner' 
    gem 'factory_girl' 
    gem "ffaker" 
    gem "capybara-firebug", "~> 1.3.0" 
    gem 'ruby-debug19' 
end 

以我黄瓜步骤之一我试图断言下拉元件 (<选择>标签)具有使用水豚API 与选定的特定选项的下拉下面的代码。水豚断言具有选择所希望的值不工作

within('#myForm') do 
    page.has_select?("#event_type", selected: @event_type).should be_true 
    end 

但是我得到这个错误:

expected: true value 
    got: false (RSpec::Expectations::ExpectationNotMetError) 

我使用@firebug对我的方案 (水豚,萤火)的标签检查DOM和发现所需的选项(通过举行@event_type)是越来越选择在“选择”属性没有得到 添加到选择的标签,我猜的DOM然而下拉 导致的预期失败。

我发现了一个类似的参考这里:https://github.com/jnicklas/capybara/issues/171 其中提到关于提交具有修复,但我猜承诺不 合并的水豚版本我using.I试图在源代码中 挖掘和发现在水豚的代码库中不存在在https://github.com/jnicklas/capybara/issues/171 中提到的修复程序。

任何机构可以请让我知道如何断言一个选择标记有选择 特定的选项?

注意:当我在宝石文件中使用水豚没有任何版本:

gem 'capybara' 

水豚版本2.1.0开始进行安装但它失败,错误:

capybara requires Ruby version >= 1.9.3 

虽然我有所需的红宝石版本。

以下是

$ rvm info 
    ruby-1.9.3-rc1: 

system: 
    uname:  "Linux jigneshgohel-Inspiron-N5110 3.2.0-40-generic-pae #64-Ubuntu SMP Mon Mar 25 21:44:41 UTC 2013 i686 i686 i386 GNU/Linux" 
    bash:  "/bin/bash => GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)" 
    zsh:   " => not installed" 

rvm: 
    version:  "rvm 1.13.4 (stable) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]" 
    updated:  "11 months 4 days 14 hours 20 minutes 18 seconds ago" 

ruby: 
    interpreter: "ruby" 
    version:  "1.9.3dev" 
    date:   "2011-09-23" 
    platform:  "i686-linux" 
    patchlevel: "2011-09-23 revision 33323" 
    full_version: "ruby 1.9.3dev (2011-09-23 revision 33323) [i686-linux]" 

homes: 
    gem:   "/home/jigneshgohel/.rvm/gems/ruby-1.9.3-rc1" 
    ruby:   "/home/jigneshgohel/.rvm/rubies/ruby-1.9.3-rc1" 

binaries: 
    ruby:   "/home/jigneshgohel/.rvm/rubies/ruby-1.9.3-rc1/bin/ruby" 
    irb:   "/home/jigneshgohel/.rvm/rubies/ruby-1.9.3-rc1/bin/irb" 
    gem:   "/home/jigneshgohel/.rvm/rubies/ruby-1.9.3-rc1/bin/gem" 
    rake:   "/home/jigneshgohel/.rvm/gems/ruby-1.9.3-rc1/bin/rake" 

environment: 
    PATH:   "/home/jigneshgohel/.rvm/gems/ruby-1.9.3-rc1/bin:/home/jigneshgohel/.rvm/gems/[email protected]/bin:/home/jigneshgohel/.rvm/rubies/ruby-1.9.3-rc1/bin:/home/jigneshgohel/.rvm/bin:/usr/local/heroku/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/media/work/Environment/Languages/Java/jdk1.7.0_04/bin:/media/work/Environment/BuildTools/apache-maven-3.0.4/bin:/media/work/Environment/BuildTools/apache-ant-1.8.3/bin" 
    GEM_HOME:  "/home/jigneshgohel/.rvm/gems/ruby-1.9.3-rc1" 
    GEM_PATH:  "/home/jigneshgohel/.rvm/gems/ruby-1.9.3-rc1:/home/jigneshgohel/.rvm/gems/[email protected]" 
    MY_RUBY_HOME: "/home/jigneshgohel/.rvm/rubies/ruby-1.9.3-rc1" 
    IRBRC:  "/home/jigneshgohel/.rvm/rubies/ruby-1.9.3-rc1/.irbrc" 
    RUBYOPT:  "" 
    gemset:  " 

继输出的输出:

$rvm list 
    rvm rubies 

    =* ruby-1.9.3-rc1 [ i686 ] 

    # => - current 
    # =* - current && default 
    # * - default 

回答

1

我不使用黄瓜,但是你例子

within('#myForm') do 
    page.has_select?("#event_type", selected: @event_type).should be_true 
end 

这取决于你的dom,但你不必在id选择器中使用'#', 和'selected:'should b e选项中的文字,而不是价值。

所以应该(假设@event_type是你显示什么文本)

within('#myForm') do 
    page.has_select?("event_type", selected: @event_type).should be_true 
end 

或不想

page.should have_select('event_type', selected: @event_type)