Also ich möchte Controller testen, der Gerät verwendet.Schienen und Gerät - Test-Controller bei der Anmeldung und abgemeldet
require 'rails_helper'
describe ArticlesController do
before(:all) { @article = FactoryGirl.create(:article) }
sign_in_admin
describe 'GET new' do
let(:call_request) { get :new }
before { call_request }
context 'admin signed in' do
it { is_expected.to respond_with :ok }
end
context 'admin signed out' do
it { is_expected.to respond_with 302 }
end
end
end
Ich folgte this guide from devise wiki. Also habe ich ControllerMacros Modul, wie Sie hier sehen können:
module ControllerMacros
def sign_in_admin
before(:each) do
@request.env['devise.mapping'] = Devise.mappings[:admin]
@admin = FactoryGirl.create(:admin)
sign_in @admin
end
end
end
und umfasste sie und andere benötigte Dinge rails_helper:
require_relative 'support/controller_macros.rb'
RSpec.configure do |config|
config.include Devise::TestHelpers, type: :controller
config.extend ControllerMacros, type: :controller
(...)
Hier ist admin Werk:
FactoryGirl.define do
factory :admin do
email '[email protected]'
password 'password'
end
end
Aber jetzt Ich weiß nicht, wie man sich abmeldet? Wie sign_in_admin vor jedem Test ausgeführt wird, aber ich muss für einige der Tests Admin unterschreiben. Was ist der beste Weg, um diesen Controller mit signed in/out admin zu testen?
btw bin ich irgendwie neu zu Test
Rubin sagt: lib/rspec/core/example_group.rb: 675: in 'method_missing ': nicht definierte Methode' login_user' für RSpec :: ExampleGroups :: ArticlesController :: GETNEW :: AdminSignedIn: Klasse (NoMethodError). Muss ich es irgendwo einbeziehen? – dominikduda
Entschuldigung, es sollte sign_in sein, nicht einloggen. Ich habe meine Antwort bearbeitet. Sie müssen rspec benötigen und die Testhelfer in Ihren Spezifikationshelfer aufnehmen. RSpeconfigure do | config | config.include Devise :: TestHelpers, geben Sie Folgendes ein:: controller end Sie können über die Testhelfer in den Gerätedokumenten unter https://github.com/plataformatec/devise nachlesen. – margo
funktioniert einwandfrei, danke! – dominikduda