Ich überschreibe SessionsController in meinem eigenen Controller und versuchte, mit RSpec zu testen. Faust, ich Setup erarbeiten mitSo testen Sie Devise Sessions Controller mit RSpec
@request.env["devise.mapping"] = Devise.mappings[:user]
meine spec:
require 'rails_helper'
require 'authentication_helper'
RSpec.describe Benutzer :: SessionsController, Typ: Controller do umfassen AuthenticationHelper
beschreiben 'neue Sitzung erstellen' tun
before(:each) do
setup_auth
end
let(:user) {FactoryGirl.create(:user, username: 'john', email: '[email protected]', password: 'pwd1234')}
it 'should return 200 with valid username and password' do
post :create, user: {login: 'john', password: 'pwd1234'}
expect(response).to have_http_status 200
expect(controller.current_user.id).to eq(user.id)
end
Ende Ende
mein SessionsController nur zurückkehren http 401 oder http 200. Wenn ich meinen spec laufen, bekomme ich diesen Fehler:
NoMethodError: nicht definierte Methode authenticate?' for nil:NilClass # /usr/local/bundle/gems/devise-3.5.6/app/controllers/devise_controller.rb:103:in
require_no_authentication‘ # ./spec /controllers/users/sessions_controller_spec.rb:16:in block (3 levels) in <top (required)>' # ./spec/rails_helper.rb:45:in
Block (3 Ebenen) in ' # /usr/local/bundle/gems/database_cleaner-1.6.0/lib/database_cleaner/generic/base.rb:16:in cleaning' # /usr/local/bundle/gems/database_cleaner-1.6.0/lib/database_cleaner/base.rb:98:in
Reinigung ' #/usr/local/bundle/edelsteine / database_cleaner-1.6.0/lib/database_cleaner/configuration.rb: 86: in block (2 levels) in cleaning' # /usr/local/bundle/gems/database_cleaner-1.6.0/lib/database_cleaner/configuration.rb:87:in
ruf ' # /usr/local/bundle/gems/database_cleaner-1.6.0/lib/database_cleaner/configuration.rb : 87: in cleaning' # ./spec/rails_helper.rb:44:in
block (2 levels) in '
Was mache ich falsch?
Es gibt keine Möglichkeit zu testen, nur meine Sitzungen Controller zu kommentieren? Ich führe Login von Ajax aus, deshalb möchte ich nur testen, ob mein Controller 200 und 401 korrekt zurückgibt. – jonatasdaniel
Wie ich sehe, dass in der Spec-Datei _require 'authentication_helper'_ erforderlich ist, so denke ich, dass ich die Datei haben sollte – Andres23Ramirez