Sto cercando di garantire che l'accesso utente corretto venga mantenuto con Devise in Rails 4 e ho difficoltà a registrare un utente nella suite di test.Come accedere/uscire utenti con Devise in Rails4 testing
Il caso più semplice:
require 'test_helper'
include Devise::TestHelpers
class SiteLayoutTest < ActionDispatch::IntegrationTest
def setup
@user = users(:test1)
end
test "logged in should get index" do
sign_in @user
get users_path
assert_response :success
assert_select "title", "User Index"
end
end
Finora non ho fatto più in realtà di una semplice implementare Devise e un controller gli utenti con le azioni appropriate.
Ottengo costantemente: NoMethodError: undefined method 'env' for nil:NilClass
, facendo riferimento in particolare alla riga contenente sign_in @user
e posso trovare altre istanze di persone che ottengono lo stesso errore, ma non riesco mai a trovare una soluzione effettiva al problema che sto tentando di risolvere.
Come accedere a un utente con Devise in Rails 4 a scopo di test? Grazie.
EDIT:
infissi/users.yml
test1:
id: '1'
email: '[email protected]'
encrypted_password: <%= Devise::Encryptor.digest(User, "password") %>
created_at: <%= Time.now - 6.minutes %>
updated_at: <%= Time.now - 4.minutes %>
SOLUZIONE IN SITU:
test "logged in should get index" do
post user_session_path, 'user[email]' => @user.email, 'user[password]' => 'password'
get users_path
assert_response :success
assert_select "title", "User Index"
end
hai provato questo ad es. '@user = User.find (1)' nell'impostazione –
: test1 è definito nelle fixture. OP modificato per riflettere. – spectre6000
per favore aggiungi un'altra chiave nei dispositivi, ad esempio 'utente:' all'interno 'test1:' e metti email e password all'interno del codice utente –