我想用黄瓜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]"
由于出现回答,但这不是我的问题。如果我不运行rake db:test:prepare我得到下一个错误:'无法找到表'用户'(ActiveRecord :: StatementInvalid)'并且在我运行后,因为所有页面都是空白,capybara找不到任何东西。 –
我更新了一些关于如何获得更好的错误信息陪伴空白页面的更多信息。 – mmrobins
感谢这宝石。我一直在寻找一种方法来查看我的服务器应用程序的堆栈跟踪一段时间。从仅看到500个错误就疯了。 –