Question

Je travaille sur une application Rails 3 Web au moment avec RSpec 2 et nous utilisons pour l'authentification Concevoir. Un (et bientôt beaucoup) de nos contrôleurs obligent l'utilisateur à être connecté. Je sais que fournit l'aide Devise test sign_in, mais il peut être utilisé avec un objet fantaisie RSpec ou Mocha?

Je l'origine essayé @user = mock_model(User) où l'utilisateur est la classe Devise. Cela ne fonctionnerait pas avec sign_in :user, @user comme get 'index' redirigerait le signe sous forme.

Quelqu'un at-il des tests d'expérience avec l'aide et peut Concevoir?

Était-ce utile?

La solution

Nous avons eu un problème similaire, mais en utilisant Factory Girl. Nous avons résolu comme ceci:

En spec_helper.rb:

config.include Devise::TestHelpers, :type => :controller

Dans la spécification du contrôleur (juste un procédé d'emballage):

def login_user(user)
    sign_in user
end

Ensuite, dans chaque méthode vous avez besoin, vous pouvez faire:

login_user(Factory(:user))

... où vous avez défini un objet utilisateur dans factories.rb. Je ne sais pas si cela fonctionnera avec se moque cependant.

Autres conseils

Une maquette ne va jamais au travail. Quand vous dites vous connecter, l'utilisateur est stocké en session (essentiellement, la classe d'utilisateur et son id). Lorsque vous accédez au contrôleur, un autre objet utilisateur est récupéré à partir des données stockées. La meilleure façon de résoudre le problème en utilisant quelque chose qui persiste l'objet, comme Factory Girl.

Je frappe la même question. Je fais ce qui suit pour l'instant:

before(:each) do
  # sign_in mock_user
  request.env['warden'] = mock(Warden, :authenticate => mock_user,
                                       :authenticate! => mock_user)
end

J'ai créé un problème pour ce ici: https://github.com/ plataformatec / élaborer / questions # numéro / 928 Allez voter!

Aucun d'entre eux a travaillé pour moi (IRM 1.9.3-apercu1, rails 3.0.1.rc5).

est la solution que j'ai trouvé: http: / /blog.joshmcarthur.com/post/6407481655/integration-tests-with-devise-and-rspec

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top