Hug*_*ugo 2 ruby activerecord rspec sinatra
我在Sinatra项目中使用RSpec.我正在测试一个运行after_find
钩子的模型来初始化一些值.我需要在每次运行之前擦除数据库,经过一些搜索后,我的规范帮助文件如下所示:
require "pry"
require "factory_girl_rails"
require "rspec-rails"
FactoryGirl.find_definitions
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
RSpec.configure do |config|
config.use_transactional_fixtures = true
end
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
undefined method `use_transactional_fixtures=' for #<RSpec::Core::Configuration:0x007fc1c89397e8> (NoMethodError)`
Run Code Online (Sandbox Code Playgroud)
我查阅了RSpec :: Core :: Configuration的文档,唯一提到的use_transactional_fixtures=
是它特别指出它是特定于rails的.我安装了'rspec-rails'宝石,所以我不知道它为什么不使用它.我甚至在spec帮助文件中要求它.
我最初的想法是创建一个运行db:drop,db:create和db:migrate然后测试的Rakefile,但我希望有一个稍微简单的方法 use_transactional_fixtures=
iai*_*ain 11
我使用Database Cleaner来做到这一点.这是我在一个spec_helper.rb
旧的东西!
RSpec.configure do |config|
# Clean up the database
require 'database_cleaner'
config.before(:suite) do
DatabaseCleaner.orm = "sequel"
DatabaseCleaner.clean_with :truncation, {:only => %w{LIST OF TABLES HERE} }
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, :js => true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each, :database) do
# open transaction
DatabaseCleaner.start
end
config.after(:each, :database) do
DatabaseCleaner.clean
end
end
Run Code Online (Sandbox Code Playgroud)
我还倾向于在开发过程中保留一个单独的测试数据库,只是为了提高速度并让我的生活更轻松.
归档时间: |
|
查看次数: |
5745 次 |
最近记录: |