In Rails 4.1.6, si verificano errori InvalidAuthenticityToken
durante l'esecuzione dei test generati con lo scaffold. C'è un modo per disabilitare il controllo del token di autenticità per un test specifico?Test impalcatura non riusciti con ActionController :: InvalidAuthenticityToken
rails g scaffold user name:string email:string password_digest:string
rake
uscita:
...
1) Error:
UsersControllerTest#test_should_create_user:
ActionController::InvalidAuthenticityToken: ActionController::InvalidAuthenticityToken
test/controllers/users_controller_test.rb:21:in `block (2 levels) in <class:UsersControllerTest>'
test/controllers/users_controller_test.rb:20:in `block in <class:UsersControllerTest>'
...
Questo è il codice sorgente:
test "should create admin_user" do
assert_difference('Admin::User.count') do
post :create, admin_user: { email: @admin_user.email, password_digest: @admin_user.password_digest, username: @admin_user.username }
end
assert_redirected_to admin_user_path(assigns(:admin_user))
end
Non ho potuto ottenere 'form_authenticity_token' per funzionare, suppongo perché è un metodo protetto. Sono stato in grado di superare il test impostando 'session [: _ csrf_token]' direttamente con 'SecureRandom.base64 (32)' (questo è ciò che 'form_authenticity_token' fa) e passando lo stesso valore del parametro' authenticity_token' nei dati del post . Sembra hackish, ma non sono sicuro di cos'altro fare. Grazie per la risposta. – Schrute
Ho modificato la mia risposta - ora dovrebbe funzionare e non sembra tale hack;) – Esse
il default di args_hash sarebbe utile '' def post_with_token (symbol, args_hash = {}) '' –