2013-09-26 82 views
6

我有一個基於Rails的一個簡單的控制器測試4個文檔(使用測試::單位):軌道4控制器測試「未定義的方法許可證」

test "should create user" do 
    assert_difference('User.count') do 
    post :create, user: users(:sample_user) 
    end 
    assert_redirected_to user_path(assigns(:user)) 
end 

而且,儘管實際的用戶創建就好了,測試失敗,他說:

1) Error: UsersControllerTest#test_should_create_user: NoMethodError: undefined method permit' for "832959492":String app/controllers/users_controller.rb:23:in user_params' app/controllers/users_controller.rb:8:in create' test/controllers/users_controller_test.rb:11:in block (2 levels) in ' test/controllers/users_controller_test.rb:10:in `block in '

出於某種原因,檢測不能識別新的Rails 4 permit方法。現在,我將user_params作爲控制器中的私有方法。但是,我試圖將其移至實際的create操作並收到相同的錯誤。用戶創建也是100%標準的(就像Rails文檔一樣,沒有什麼特別的)。

有誰知道我可以重寫或以其他方式通過此測試嗎?

回答

19

看起來好像是POST編輯到您的create路由的數據只是一個字符串,而不是屬性的散列。 users(:sample_user)返回什麼?它只是一個ID,或者可能是一個沒有被正確序列化的ActiveRecord對象?如果是AR,也許你需要發送users(:sample_user).attributes作爲有效載荷?

+2

謝謝,我正在使用夾具,這是問題所在。添加.attributes是解決方案! – Justin

相關問題