Test d'intégration avec rspec et de concevoir sign_in env
Je suis à l'aide de concevoir configuré pour utiliser omniauth facebook signe de l'intégration.
Lors de l'appel de la sign_in
méthode de mon spec/request
tests j'obtiens:
undefined method `env' for nil:NilClass
spec:
describe FacebookController do
include Devise::TestHelpers
it "should display facebook logged in status" do
@user = User.create(:id => "123", :token => "token")
sign_in @user
visit facebook_path
end
end
Voici une solution de concevoir github wiki qui travaille dans le contrôleur de test pour moi, https://github.com/plataformatec/devise/wiki/How-To:-Test-controllers-with-Rails-3-and-4-(and-RSpec)
OriginalL'auteur Edijs Petersons | 2011-10-15
Vous devez vous connecter pour publier un commentaire.
Votre code ressemble beaucoup à la mienne - j'ai essayé d'utiliser le Capybara et le dispositif TestHelper fonctions, et il s'avère que vous ne pouvez pas, par https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara. La méthode recommandée pour le faire est expliqué sur cette page, et il a travaillé pour moi.
Pour être clair, voici ce que j'ai fait en
spec_helper.rb
:Et dans mon code, tout simplement -
logout :user
.Voici pourquoi, selon la devise wiki, vous ne pouvez pas utiliser
sign_out
:Qui, en gros, signifie qu'alors qu'avec, disons,
MiniTest
, un objet représentant la demande (@request
) est ajouté comme une variable d'instance de la classe de cas de test, qui ne se produit pas avec le Capybara. Je n'ai pas regardé le code pour connaître les détails plus exactement, mais en gros, Préfet s'attend à trouver cet objet pour ensuite accéder à la banque de cookies, où le signe dans les informations d'identification sont. Avec Capybara/RSpec, j'attends ce n'est pas le cas.OriginalL'auteur sameers