2013-09-26 15 views
6

Mam prosty test kontrolera opartego na szynach 4 Docs (testem :: katalogowa):Szyny 4 Controller Test "Undefined Metoda Permit"

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 

I mimo rzeczywistego użytkownika tworzone w porządku, test nie powiedzie się, mówiąc:

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 '

Z jakiegoś powodu, to badanie nie rozpoznaje nowego Rails 4 permit metody. W tej chwili mam user_params jako prywatną metodę w kontrolerze. Ale próbowałem przenieść go do rzeczywistej akcji create i otrzymał ten sam błąd. Tworzenie użytkownika jest również w 100% standardowe (nic szalonego w ogóle - tak jak dokumenty Railsowe).

Czy ktoś wie, jak mogę przepisać lub w inny sposób przejść test?

Odpowiedz

19

Wygląda na to, że dane, które są POST ed na trasie , są tylko ciągiem, zamiast hashiem atrybutów. Co zwraca users(:sample_user)? Czy jest to tylko identyfikator, czy może obiekt ActiveRecord, który nie jest poprawnie serializowany? Jeśli to AR, może musisz wysłać users(:sample_user).attributes jako ładunek?

+2

Dzięki, korzystałem z urządzenia i to był problem. Dodanie .attributes było rozwiązaniem! – Justin