2012-08-29 56 views
0

我想用黄瓜1.2.1,水豚1.1.2和硒在javascript中测试确认对话框。 Ruby是1.9.3,RoR是3.2.6。用黄瓜+水豚+硒测试导轨应用程序导致空白页

我的特点/ env.rb是:

require 'cucumber/rails' 

Capybara.default_selector = :css 
Capybara.default_driver = :selenium 

ActionController::Base.allow_rescue = false 

begin 
    DatabaseCleaner.strategy = :transaction 
rescue NameError 
    raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it." 
end 

Cucumber::Rails::Database.javascript_strategy = :truncation 

# For testing email 
require 'email_spec/cucumber' 

# Load FactoryGirl methods 
World(FactoryGirl::Syntax::Methods) 

require 'declarative_authorization/maintenance' 
World(Authorization::TestHelper) 

# To handle popups 
require 'prickle/capybara' 
World(Prickle::Capybara) 

我的步骤是:

# To test popups. The popup object is define by the gem prickle 
Entonces /^debería ver "([^"]*)" en un cuadro de diálogo$/ do |text| 
    popup.message.should have_content(text) 
end 

Cuando /^(cancelo|confirmo) el cuadro de diálogo$/ do |option| 
    popup.send(option == "cancelo" ? "dismiss" : "confirm") 
end 

宝石刺痒使用page.driver.browser.switch_to.alert打开这些弹出窗口(这只是一个shorcut)。

我安装宝石:

group :test do 
    gem 'cucumber-rails' 
    # database_cleaner is not required, but highly recommended 
    gem 'database_cleaner' 
    gem 'capybara' 
    # To test email delivery with cucumber 
    gem 'email_spec' 
    # Rspec 
    gem 'rspec-rails' 
    gem 'rspec' 
    # To create instance of objects in the database 
    gem 'factory_girl_rails' 
    # To generate random data 
    gem 'faker' 
    # To open pages with capybara 
    gem 'launchy' 

    #To test popups 
    gem 'prickle' 
    # To open web browser while testing and test javascript 
    gem 'selenium' 
end 

当我跑我的测试中,它不显示在我的浏览器(Firefox)的任何东西。它说“连接已重置”,当然水豚在页面中找不到任何元素。如果我删除行:

Capybara.default_driver = :selenium 

从env.rb,测试,没有JavaScript的工作不错,但试图运行弹出窗口,它说的步骤时:

undefined method `switch_to' for #<Capybara::RackTest::Browser:0x00000005424cf8> (NoMethodError) 

我能试试吗?我花了很多时间尝试不同的方法,但没有人工作。我也试过webkit,但由于一个神秘的错误,我无法安装它。

更新,以显示精选内容

#language: es 
    Característica: Eliminar usuario 

    Antecedentes: Usuarios registrados 

     Dado que los siguientes usuarios existen: 

      | email      | password  | 
      | [email protected]  | b12345  | 
      | [email protected]  | e12345  | 

     Y estoy autenticado como "[email protected]" 


    Escenario: Eliminación exitosa  
     Dado que estoy autorizado para "eliminar usuario" 
     Cuando visito la página "ver usuario" para "[email protected]" 
     Y presiono "Eliminar usuario" 
     Entonces debería ver "¿Está seguro que desea eliminar el usuario [email protected]?" en un cuadro de diálogo 
     Cuando confirmo el cuadro de diálogo 
     Entonces debería estar en la página "listar usuarios" 
     Y debería ver "El usuario '[email protected]' ha sido eliminado exitosamente" 
     Y no debería existir un "usuario" con "email" "[email protected]" 

回答

3

我时,我的测试数据库未迁移是当前这个同样的问题,但它是不是很明显发生了什么事,因为错误是不显示在控制台,我刚刚收到了“连接重置”错误。我终于能够得到堆栈跟踪的问题通过设置以下的功能/支持/ env.rb

Capybara.app =机架:: ShowExceptions.new(YourRailsApp ::应用)

+0

由于出现回答,但这不是我的问题。如果我不运行rake db:test:prepare我得到下一个错误:'无法找到表'用户'(ActiveRecord :: StatementInvalid)'并且在我运行后,因为所有页面都是空白,capybara找不到任何东西。 –

+0

我更新了一些关于如何获得更好的错误信息陪伴空白页面的更多信息。 – mmrobins

+1

感谢这宝石。我一直在寻找一种方法来查看我的服务器应用程序的堆栈跟踪一段时间。从仅看到500个错误就疯了。 –