3

我正在开发一个 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块中包含一些东西?

4

2 回答 2

1

如果您的会话已启用,我想您可以使用env['rack.session'].

我也会向你推荐这个 tut http://railscasts.com/episodes/280-pry-with-railsbinding.pry使用 pry 有很多优点,你可以在你的规范 中编写并调试它

于 2012-05-29T09:40:21.770 回答
0

大约后。200 小时的谷歌搜索,我自己找到了答案。

它归结为这些神奇的词:

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

RSpec.configure do |c|
  c.include FoobarHelper, :type => :api
end
于 2012-06-13T23:05:44.820 回答