在加载所有全局灯具之后,在运行任何测试/规格之前,我在哪里可以编写仅执行一次的代码
我在Rails 2.3.11上尝试使用rspec 1.3.1之前(:套件),这似乎在灯具之前执行。
答案 0 :(得分:0)
rake任务(/ lib / tasks)怎么样?例如,我有一个(reset_db.rake)加载灯具,重置db等等:
namespace :db do
desc "Drop, create, migrate, seed the database and prepare the test database for rspec"
task :reset_db => :environment do
Rake::Task['db:drop'].invoke
Rake::Task['db:create'].invoke
Rake::Task['db:migrate'].invoke
Rake::Task['db:fixtures:load'].invoke
Rake::Task['db:test:prepare'].invoke
end
end
答案 1 :(得分:0)
我遇到了同样的问题,但是仍然没有找到任何方法在加载灯具后连接一些代码......所以我使用了SpyrosP解决方案。然而,这种做法的问题在于你不能再受益于灯具访问器助手,因为你没有从rspec配置加载你的灯具,而是从rake任务加载。
所以基本上你需要像那样重新创建那些帮助者(代码有点脏,但似乎对我有用:
#spec_helper.rb
module CustomAccessors
# Remplacement de fixtures :all
%w{yml csv}.each do |format|
paths = Dir.
glob(::Rails.root.join("spec/fixtures/*.#{format}")).
map! { |path| path.match(/\/([^\.\/]*)\./)[1] }
paths.each do |path|
define_method path do |*args|
path.singularize.camelcase.constantize.find(ActiveRecord::Fixtures.identify(args[0]))
end
end
end
end
RSpec.configure do |config|
#config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.include(CustomAccessors)
end