2015-09-29 91 views
0

我有一个控制器操作的东西,如:如何用Rspec模拟模型属性?

@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) 

任何帮助是什么错误我在干什么?

谢谢

回答

1

好吧。

看来我还是应该使用:

allow(widget).to receive(:user_id=).and_return(widget) 

USER_ID =和NOT user_id说明