忽略Rspec请求修改

时间:2014-05-19 15:02:31

标签: ruby-on-rails rspec2

我经历了一段时间,控制器规格忽略了请求修改。

为了找到错误,spec_helper被压缩为

ENV["RAILS_ENV"] ||= 'test'

require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require "webmock/rspec"

Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

RSpec.configure do |config|
  config.mock_with :rspec
  config.infer_base_class_for_anonymous_controllers = false
end

控制器规范本身看起来像这样(忽略其他上下文)

require 'spec_helper'
require 'rest-client'

describe SessionsController, :type => :controller do
  describe '#create' do
    it 'should [something]' do
      session[:return_point] = root_path
      post :create, {:sessions => {:email => 'foo@bar.com', :password => :123}}
    end
  end
end

并且sessions_controller被压缩为

class SessionsController < GuestBaseController
  def create
    raise session.inspect
  end
end

规范中这一加注的结果是{},这显然是错误的,因为我只是在会话中添加了一些内容。

问题部分: 我是否未能设置一些配置变量来执行会话魔术/模拟和存根魔法?

request.cookiesresponse.cookies存在同样的问题。 我可以设置它们,但它们会被忽略。

任何帮助都会得到满足。

1 个答案:

答案 0 :(得分:0)

在控制器规范中,您可以修改属于request对象的会话,也可以将其作为第二个哈希传递给请求消息:

request.session[:return_point] = root_path
get :index, {}, { another_session: 'is merged with the request session' }