我有使用会话的sinatra应用程序,如何测试使用会话的页面?
我使用Rspec + sinatra
TSS
答案 0 :(得分:1)
This page,显示使用rspec
和sinatra
测试会话的主要问题。
主要问题是无法从测试代码访问变量session
。为了解决这个问题,它建议(并且我确认)在spec/spec_helper.rb
:
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