6

Rails 4 のドキュメント (Test::Unit を使用) に基づいた簡単なコントローラー テストがあります。

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) エラー: UsersControllerTest#test_should_create_user: NoMethodError: undefined method permit' for "832959492":String app/controllers/users_controller.rb:23:inuser_params' app/controllers/users_controller.rb:8:increate' test/controllers/users_controller_test.rb:11:inブロック (2 レベル) in ' test/controllers/users_controller_test.rb:10:in `block in '

何らかの理由で、テストが Rails 4 の新しいpermitメソッドを認識していません。現在、user_paramsコントローラーのプライベートメソッドとして を持っています。createしかし、実際のアクションに移動しようとしたところ、同じエラーが発生しました。ユーザーの作成も 100% 標準です (Rails のドキュメントのように、おかしなことはまったくありません)。

書き直す方法や、このテストに合格する方法を知っている人はいますか?

4

1 に答える 1

19

POSTルートに編集されているデータはcreate、属性のハッシュではなく単なる文字列のようです。何をusers(:sample_user)返しますか?それは単なる ID ですか、それとも正しくシリアル化されていない ActiveRecord オブジェクトですか? users(:sample_user).attributesAR の場合、ペイロードとして送信する必要があるのではないでしょうか?

于 2013-09-27T02:38:34.833 に答える