Stub FactoryGirl Observer Class - PullRequest
       8

Stub FactoryGirl Observer Class

0 голосов
/ 14 декабря 2011

У меня есть 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

1 Ответ

1 голос
/ 14 декабря 2011

Я бы не стал заглушку в определении. В определении вы можете просто настроить свойства, а затем использовать

Factory.stub(:user)

Позже, который заглушит все свойства.

...