Ruby 如何使用Rspec模拟模型属性?
我有一个控制器动作,类似于:Ruby 如何使用Rspec模拟模型属性?,ruby,testing,rspec,mocking,bdd,Ruby,Testing,Rspec,Mocking,Bdd,我有一个控制器动作,类似于: @widget = Widget.new(permitted_params) @widget.user_id = current_user.id if @widget.save @widget else { errors: @widget.errors.full_messages } end 我正在尝试为那个控制器创建一个规范 widget = mock_model(Widget) allow(W
@widget = Widget.new(permitted_params)
@widget.user_id = current_user.id
if @widget.save
@widget
else
{ errors: @widget.errors.full_messages }
end
我正在尝试为那个控制器创建一个规范
widget = mock_model(Widget)
allow(Widget).to receive(:new).and_return(widget)
allow(widget).to receive(:user_id).and_return(widget)
allow(widget).to receive(:save).and_return(true)
expect(widgets).to receive(:build)
expect(widget).to receive(:save)
post '/v2/widgets', name: 'foo'
expect(json_response).to eq widget.as_json
现在我得到了一件奇怪的事情:
Failure/Error: post '/v2/widgets', name: 'foo'
#<Double "Widget_1133"> received unexpected message :user_id= with (1129)
有人帮忙吗?我犯了什么错
谢谢好的,收到了
似乎我应该用:
allow(widget).to receive(:user_id=).and_return(widget)
用户id=而非用户id
allow(widget).to receive(:user_id=).and_return(widget)