我正在开发一个API,并希望测试登录方法。 API的规范位于spec/api/
而不是spec/controller
。我正在使用rspec-rails。现在我有一个这样的规范:
describe "/api/login.json", :type => :api do
let(:user) { FactoryGirl.create(:user) }
context "when called with correct credentials" do
before(:all) do
post "/api/v1/passenger/login.json",:email => user.email, :password => user.password
end
it "responds with HTTP 200" do
last_response.status.should == 200
end
it "sets the session correctly" do
session[:user_id].should == user.id # <-- ### Here ###
end
end
end
失败了。 session
是零。如何访问会话变量?
我想我必须在我的RSpec.configure
区块中添加一些内容?
答案 0 :(得分:1)
如果您的会话已启用,我猜您可以使用env['rack.session']
获得该会话。
我也会推荐你这个啧啧http://railscasts.com/episodes/280-pry-with-rails
使用pry有很多优点,你可以在你的规范中编写binding.pry
并调试它
答案 1 :(得分:0)
约。我用谷歌搜索了200个小时。
归结为这些神奇的话:
module FoobarHelper
def session
last_request.env['rack.session']
end
end
RSpec.configure do |c|
c.include FoobarHelper, :type => :api
end