Je n'arrive pas à comprendre comment tester l'application Rails avec le login de l'appareil.Comment tester l'application Rails avec le login de l'appareil
Le message est comme ceci.Que dois-je faire? Peut-être que je dois créer spec/model/user.rb?
$ bundle exec rspec spec/controllers/root_controller_spec.rb
F
Failures:
1) RootController GET #index returns http success
Got 0 failures and 2 other errors:
1.1) Failure/Error: @user = create(:user)
NoMethodError:
undefined method `create' for #<RSpec::ExampleGroups::RootController::GETIndex:0x007fe643b89878>
# ./spec/controllers/root_controller_spec.rb:6:in `block (2 levels) in <top (required)>'
1.2) Failure/Error: sign_out @user
NoMethodError:
undefined method `sign_out' for #<RSpec::ExampleGroups::RootController::GETIndex:0x007fe643b89878>
# ./spec/controllers/root_controller_spec.rb:19:in `block (2 levels) in <top (required)>'
Finished in 0.00597 seconds (files took 3.12 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/controllers/root_controller_spec.rb:12 # RootController GET #index returns http success
spec/usines/users.rb
FactoryGirl.define do
factory :user do
username "Johney"
sequence(:email) { |n| "johney#{n}@test.com"}
password "password"
password_confirmation "password"
end
end
spec/contrôleur/root_controller_spec.rb
require 'rails_helper'
RSpec.describe RootController, type: :controller do
before do
@user = create(:user)
sign_in @user
end
describe "GET #index" do
it "returns http success" do
get :index
expect(response).to have_http_status(:success)
end
end
after do
sign_out @user
end
fin
spec_helper.rb
RSpec.configure do |config|
# Customize in Eiicon-Dola
config.include FactoryGirl::Syntax::Methods
config.include Devise::TestHelpers, type: :controller
end
Tout conseil est le bienvenu. Merci d'avance.
Qu'advient-il si vous changez à '@user = FactoryGirl.create (: user)'? – max
Aussi, sauf si vous travaillez sur un projet hérité, vous devez ajouter ces inclus dans 'rails_helper.rb'. La logique étant que vous pouvez exiger 'spec_helper.rb' pour les exemples qui n'ont pas besoin de toute la pile des rails. – max
Merci @max. Malheureusement, la modification que vous avez mentionnée a affecté n'importe quoi. Le message d'erreur est toujours le même comme ceci. 'Échecs: 1) RootController GET #index rend l': vue d'index obtenu 0 échecs et 2 autres erreurs: 1.1) Défaut/Erreur: @user = FactoryGirl.create (: user) NoMethodError: méthode non définie 'username = 'pour # # ./spec/controllers/root_controller_spec.rb:7:in' bloc (2 niveaux) dans ' ' –