Stub FactoryGirl Observer Class

时间:2011-12-14 02:24:24

标签: ruby-on-rails rspec factory-bot

我有一个FactoryGirl如下。 所以我尝试在基本块上创建一些factoryGirl并继承它并依赖于测试它在User类的Observer上存根一个方法。问题是,一旦它存根一个方法,就会保留该类的存根。正如你所看到的那样,我们试图在开始时取消存储所有的存根,但由于并非所有存根都存在,所以我们也不能这样做。 知道如何处理这个问题吗?

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 个答案:

答案 0 :(得分:1)

我不会将存根放在定义上。在定义上,您只需设置属性,然后使用

Factory.stub(:user)

稍后,将存根所有属性。