У меня есть FactoryGirl, как показано ниже.
Поэтому я пытаюсь создать несколько из factoryGirl в базовом блоке и наследовать его, и в зависимости от теста он заглушает метод в Observer класса User. Проблема в том, что когда он заглушает метод, он сохраняет заглушку для этого класса. как вы можете видеть, мы пытались отменить все заглушки в начале, но так как не все заглушки всегда, мы тоже не можем этого сделать.
Есть идеи, как бороться с этой проблемой?
FactoryGirl.define do
factory :base_user, class: User do |user|
sequence(:email) {|n| "user#{n}@example.com" }
password 'password'
password_confirmation 'password'
first_name { 'Santa' }
last_name { 'Clause' }
user.after_build do |u|
[:after_create, :create_piick_user, :send_signup_email].each do |method|
begin
UserObserver.any_instance.unstub(method)
rescue RuntimeError
end
end
end
end
factory :user, parent: :base_user do |user|
user.after_build do |u|
UserObserver.any_instance.stub(:after_create).and_return(nil)
end
end
factory :user_with_welcome_email, parent: :base_user do |user|
user.after_build do |u|
UserObserver.any_instance.stub(:create_piick_user).and_return(nil)
end
end
end