2013-02-06 17 views
3

一個PARAM我有與此一users_controller_spec.rb:RSpec的經過物體如在controller_spec

describe "POST create" do 
    describe "with valid params" do 
    let(:user) { create(:user) } 

    it "assigns a newly created user as @user" do 
     post :create, user: user 
     assigns(:user).should be_a(User) 
     assigns(:user).should be_persisted 
    end 
    end 

... 

end 

Debuggin我發現,所述控制器接收下一PARAMS

(rdb:1) pp params 
{"user"=>"1", "controller"=>"users", "action"=>"create"} 

爲什麼 「用戶」= >「1」?,爲什麼不正確傳遞用戶對象?

回答

3

post :create預計將用於創建用戶記錄的用戶模型的屬性。您看到「user」=>「1」,因爲它將您創建的用戶的id傳遞給:user參數。

您不想創建用戶記錄來測試創建操作。您想創建創建操作的屬性的哈希以創建記錄。

你可以寫這樣的事情(假設這將通過您的模型驗證):

user_attributes = { :email => "[email protected]", :username => "something" } 
post :create, user: user_attributes 
+0

我不知道這事,謝謝!我現在都在工作 –