0
나는 FactoryGirl을 가지고있다. 그래서 기본 블록에 factoryGirl을 거의 만들지 않으려 고 테스트의 결과에 따라 상속합니다. Observer에서 User 클래스의 메서드를 스텁합니다. 문제는 메소드를 스텁 한 후에 클래스에 스텁을 유지하는 것입니다. 당신이 볼 수 있듯이 우리는 처음에 모든 스터브를 떼어 놓으려고했으나 모든 스텁이 항상 스텁되지 않았기 때문에 우리는 그렇게 할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?스텁 FactoryGirl 옵저버 클래스
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