Bac*_*cko 5 ruby selenium ruby-on-rails cucumber capybara
我使用Ruby on Rails 3.2.2,cucumber-rails-1.3.0,rspec-rails-2.8.1和capybara-1.1.2.我想使用Selenium来测试JavaScripts,但是test每次cucumber在终端窗口中运行命令行时都不要删除数据库数据.也就是说,如果我声明如下的功能:
Feature: ...
@javascript
Scenario: ...
Run Code Online (Sandbox Code Playgroud)
JavaScript也经过了预期的测试.但是,在测试运行后,test数据库数据将被删除,我必须再次播种该数据库才能正确运行新测试.
我阅读了官方文档和文件中的文本ROOT_APP/features/support/env.rb(似乎我安装了所有必需的Ruby宝石 - 请参阅下面有关我正在使用的Gemfile的更多信息)但我不明白如何避免删除数据库数据以及如何配置Cucumber和Capybara宝石以便与Selenium合作.
我该怎么办?
注意I:我想做出上述内容,因为 我想test在"测试"/"运行"场景时拥有相同的数据库数据.
注意二:为了在test数据库中播种数据(我的应用程序需要该数据工作),我在RAILS_ROOT_PATH/lib/tasks/cucumber.rake文件中添加以下代码,并rake db:test:prepare从终端窗口运行命令行.
namespace :db do
namespace :test do
task :prepare => :environment do
Rake::Task["db:seed"].invoke
end
end
end
Run Code Online (Sandbox Code Playgroud)
在ROOT_APP/features/support/env.rb文件中,我试图取消注释以下两个代码块(BTW:我从未更改过cucumber-railsgem 自动生成的原始文件,因此它是默认的),但在运行测试后仍会删除test数据库数据.
# Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do
# # { :except => [:widgets] } may not do what you expect here
# # as tCucumber::Rails::Database.javascript_strategy overrides
# # this setting.
# DatabaseCleaner.strategy = :truncation
# end
#
# Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
# DatabaseCleaner.strategy = :transaction
# end
Run Code Online (Sandbox Code Playgroud)
Gemfile摘录:
group :development, :test do
gem "rspec-rails"
end
group :test do
gem 'cucumber-rails'
gem 'database_cleaner'
gem 'capybara'
end
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,并通过更改以下行来解决它ROOT_APP/features/support/env.rb
从
Cucumber::Rails::Database.javascript_strategy = :truncation
Run Code Online (Sandbox Code Playgroud)
到
Cucumber::Rails::Database.javascript_strategy = :transaction
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
| 归档时间: |
|
| 查看次数: |
600 次 |
| 最近记录: |