Я использую factory_girl_rails вместо приборов. Вот мои модели:
class User < ActiveRecord::Base
has_many :tasks
belongs_to :project
end
class Task < ActiveRecord::Base
belongs_to :user
belongs_to :project
end
class Project < ActiveRecord::Base
has_many :users
has_many :tasks
end
Вот соответствующая фабрика:
Factory.define :task do |t|
t.association :user
t.association :project
t.after_create {|t| t.user.tasks << t}
t.after_create {|t| t.project.tasks << t}
end
В интеграционном тесте я делаю это:
scenario "user with tasks from one project is assigned another task from the same project" do
user = Factory.create :user
(1..5).each { Factory.create(:task, :user => user, :project => user.project)}
visit_project_path user.project
correctly_fill_in_new_task_fields
click_button "Create task" #creates a new task for the above user
assert user.tasks.size == 6 #currently fails
end
У меня проблема в том, что после сценария запускается user.tasks.size == 5
, но Task.where(:user_id => user.id).size == 6
. Буду признателен за любую помощь.