使用会话sinatra使用Rspec进行测试

时间:2010-03-12 18:08:40

标签: rspec sinatra

我有使用会话的sinatra应用程序,如何测试使用会话的页面?

我使用Rspec + sinatra

TSS

3 个答案:

答案 0 :(得分:1)

This page,显示使用rspecsinatra测试会话的主要问题。

主要问题是无法从测试代码访问变量session。为了解决这个问题,它建议(并且我确认)在spec/spec_helper.rb

添加fowling行
def session
  last_request.env['rack.session']
end

它将使测试代码中的最后一个请求可以访问模拟的会话对象。

这是我的控制器代码,其中包含code参数并将其值存储在session

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

然后是测试代码:

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

答案 1 :(得分:0)

与所有其他页面相同。

您需要澄清您的问题。测试会话有什么问题。如果用户需要登录时出现问题,那么您可以在spec文件中使用类似的内容:

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

将在每次测试前登录。

答案 2 :(得分:0)

我只能通过禁用测试环境的会话来使其工作。这篇博文有一个很好的例子:http://benprew.posterous.com/testing-sessions-with-sinatra