使用会话sinatra使用Rspec进行测试
我有使用session的sinatra应用程序,如何测试使用session的页面 I使用Rspec+sinatra使用会话sinatra使用Rspec进行测试,rspec,sinatra,Rspec,Sinatra,我有使用session的sinatra应用程序,如何测试使用session的页面 I使用Rspec+sinatra Tks与所有其他页面一样 你需要澄清你的问题。测试会话有什么问题。如果问题是用户需要登录,则可以在spec文件中使用类似以下内容: before :each do post "/login", {:username => "myuser", :password => "mypass"} end 它将在每次测试之前让您登录。我只能通过禁用测试环境的会话来让它工作。这
Tks与所有其他页面一样 你需要澄清你的问题。测试会话有什么问题。如果问题是用户需要登录,则可以在spec文件中使用类似以下内容:
before :each do
post "/login", {:username => "myuser", :password => "mypass"}
end
它将在每次测试之前让您登录。我只能通过禁用测试环境的会话来让它工作。这篇博文有一个很好的例子:,展示了使用
rspec
和sinatra
测试会话的主要问题
主要问题是无法从测试代码访问变量会话
。为了解决这个问题,它建议(我也确认)在spec/spec\u helper.rb
添加捕鸟线:
def session
last_request.env['rack.session']
end
它将使模拟会话对象可以从测试代码的最后一个请求中访问
这是我的控制器代码,它读取一个代码
参数,并将其值存储在会话
:
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
我认为您应该使用Rack::Test(或类似Capybara的其他工具)来测试会话感知代码Internet存档链接: