2013-09-26 7 views
6

Ho un test di controllo semplice che si basa sui binari 4 documenti (utilizzando Test :: Unit):Rails 4 controller di prova "non definita Metodo 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 

E, nonostante l'utente attuale sta creando più che bene, il test ha esito negativo, dicendo:

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 '

Per qualche ragione, il test non riconosce le nuove Rails 4 permit metodo. Al momento, ho il user_params come metodo privato nel controller. Ma, ho provato a spostarlo fino all'effettiva azione create e ho ricevuto lo stesso errore. Anche la creazione dell'utente è standard al 100% (niente di pazzesco, proprio come i documenti di Rails).

Qualcuno sa come posso riscrivere o altrimenti passare questo test?

risposta

19

Sembra che il dato che è POST ed è il tuo itinerario create è solo una stringa, invece di un hash di attributi. Cosa restituisce users(:sample_user)? È solo un ID o forse un oggetto ActiveRecord che non viene serializzato correttamente? Se si tratta di AR, forse è necessario inviare users(:sample_user).attributes come carico utile?

+2

Grazie, stavo usando un dispositivo e questo era il problema. L'aggiunta di .attributes era la soluzione! – Justin

Problemi correlati