gpt4 book ai didi

ruby-on-rails - 如何在不删除 `test` 数据库数据的情况下测试 JavaScript?

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:10 28 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3.2.2、cucumber-rails-1.3.0、rspec-rails-2.8.1 和 capybara-1.1.2。我想使用 Selenium为了测试 JavaScript,但每次在终端窗口中运行 cucumber 命令行时都不会删除 test 数据库数据。也就是说,如果我声明如下功能:

Feature: ...

@javascript
Scenario: ...

JavaScript 的测试和预期的一样。但是,在测试运行后,test 数据库数据被删除,我必须再次为该数据库设置种子,以便正确运行新测试。

我读了Official Documentation以及 ROOT_APP/features/support/env.rb 文件中的文本(似乎我安装了所有必需的 Ruby gems - 有关我正在使用的 Gemfile 的更多信息,请参见下文)但我没有了解如何避免删除数据库数据以及如何配置 Cucumber 和 Capybara gems 以便正确使用 Selenium。

我应该做什么?

注意:我想做上面的是因为我想在“测试”/“运行”时拥有相同的test 数据库数据场景

注意 II:为了在 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

ROOT_APP/features/support/env.rb 文件中,我尝试取消对以下代码块的注释(BTW:我从未更改原始代码文件由 cucumber-rails gem 自动生成,因此它是默认文件),但在运行测试后它仍然删除 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

gem 文件摘录:

group :development, :test do
gem "rspec-rails"
end

group :test do
gem 'cucumber-rails'
gem 'database_cleaner'
gem 'capybara'
end

最佳答案

我遇到了同样的问题,并设法通过更改 ROOT_APP/features/support/env.rb 中的以下行来解决它

来自

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

Cucumber::Rails::Database.javascript_strategy = :transaction

希望这有助于...

关于ruby-on-rails - 如何在不删除 `test` 数据库数据的情况下测试 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9763142/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com