我正在尝试使用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
回调。
非常感谢您的帮助。