Используя приспособления с factory_girl

При создании следующей фабрики:

Factory.define :user do |f|
  f.sequence(:name) { |n| "foo#{n}" }
  f.resume_type_id { ResumeType.first.id }
end

ResumeType.first ноль возвратов и я получаем ошибку.

ResumeType записи загружаются через приспособления. Я проверил использование консоли, и записи там, таблица не пуста.

Я нашел подобный пример в factory_girl списке рассылки, и он, как предполагается, работает.

Что я пропускаю? Я должен так или иначе сказать factory_girl настраивать приспособления прежде, чем запустить тесты?

Это - то, на что похож мой test_helper:

ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'test_help'

class ActiveSupport::TestCase
  self.use_transactional_fixtures = true
  self.use_instantiated_fixtures  = false
  fixtures :all
end
9
задан deb 29 April 2010 в 12:58
поделиться

1 ответ

Моим решением было создать файл db/seeds.rb, который содержал код модели для генерации данных о семенах:

# Create the user roles
Role.create(:name => "Master", :level => 99)
Role.create(:name => "Admin", :level => 80)
Role.create(:name => "Editor", :level => 40)
Role.create(:name => "Blogger", :level => 30)
Role.create(:name => "User", :level => 0)

А затем включить его в spec_helper. rb:

ENV["RAILS_ENV"] = 'test'
require File.expand_path(File.join(File.dirname(__FILE__),'..','config','environment'))
require 'spec/autorun'
require 'spec/rails'
require "#{Rails.root}/db/seeds.rb"

(Честно говоря, мне пока не удалось заставить autospec работать с этим, так как он продолжает дублировать мои посевные данные, но я и не пытался.)

Преимуществом этого решения также является готовность к Rails 3 и работа с задачей rake db:seed.

6
ответ дан 4 December 2019 в 23:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: