RSpec + FactoryGirl对象无法识别私有方法

时间:2016-02-12 16:40:04

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

我正在尝试使用TDD /构建用户API,但我很难处理update操作,特别是因为after_update回调

模型

class User

  after_update :send_pro_user_updated_notification

  # ...

  private
  def send_pro_user_updated_notification
    # ...
  end
end

工厂

FactoryGirl.define do
  factory :user do
    first_name { FFaker::Name.first_name }
    last_name { FFaker::Name.last_name }
    email { FFaker::Internet.email }
    password "12345678"
  end
end

规格

describe "PUT #update" do
  context "when is successfully updated" do
    before :each do
      create(:user)
      put :update, { id: user.id, user: { first_name: 'Geoffrey' } }, format: :json
    end

    it "renders the json representation for the updated user" do
      expect(json_response[:data][:first_name]).to eq('Geoffrey')
    end

    it { should respond_with 200 }
  end
end

控制器

def update
  user = User.find(params[:id])
  if user.update_attributes(params[:user])
    # render json success response 
  else
    # render json error response 
  end
end

运行测试后,我得到的错误如下:
undefined local variable or method 'send_pro_user_updated_notification' for #<User:0x007f82b78e59e0>

即使使用binding.pry我尝试在User对象上调用该方法并获得相同的错误,但我可以调用公共方法。

如果我删除了测试通过的after_update回调。

非常感谢您的帮助。

0 个答案:

没有答案