2010-03-12 4 views
2

J'ai une application Sinatra en utilisant la session, comment puis-je tester une page qui utilise la session?Test avec Rspec en utilisant session sinatra

I à l'aide Rspec + sinatra

TKS

+0

Je pense que vous devriez utiliser rack :: Test (ou quelque chose en plus de cela comme Capybara) pour tester le code conscient de la session – froderik

Répondre

0

même comme toutes les autres pages.

Vous devez clarifier votre question. Quel est le problème avec la session de test. En cas de problème est que l'utilisateur doit être connecté, vous pouvez utiliser quelque chose comme ceci dans le fichier spec:

before :each do 
    post "/login", {:username => "myuser", :password => "mypass"} 
end 

qui vous connecter avant chaque test.

0

This page, spectacle est le principal problème de la séance d'essais avec rspec et sinatra.

Le problème principal est que la variable session n'est pas accessible à partir du code de test. Pour le résoudre, il suggère (et je confirme) d'ajouter les lignes à spec/spec_helper.rb au gibier à plumes:

def session 
    last_request.env['rack.session'] 
end 

Il rendre accessible un objet de session moqué de la dernière demande au code de test.

Voici mon code du contrôleur qui a lu est un code param et stocke sa valeur à session:

post '/step2callback' do 
    session['code'] = params['code'] 
end 

Ensuite, voici le code de test:

context "making an authentication" do 
    before do 
    post "/step2callback", code: "code_sample" 
    end 
    it "reads the param code and saves it at session" do 
    expect(session['code']).to eq("code_sample") 
    end 
end 
Questions connexes