【问题标题】:rspec controller empty sessionrspec 控制器空会话
【发布时间】:2015-06-06 16:30:29
【问题描述】:

app/controllers/new_controller.rb

  class NewController < ApplicationController
   def enter_time
    session[:dr] = 'dr'
    if !params[:time].nil? then
      Time.zone = @franchise.time_zone
      inanhour = 1.hour.since(Time.zone.now)

      delivery_time = delivery_time_format(params[:time])
      delivery_time = delivery_time.change(offset: (Time.zone.now.utc_offset / 3600).to_s)
      session[:target_time] = [delivery_time, inanhour].max.to_s
    end
    end
   end

spec/controllers/new_controller_spec.rb

require 'spec_helper'

describe NewController, :type => :controller do
  before do
    allow(controller).to receive(:current_user) { nil }
  end

  describe "POST /enter_time" do
    let(:addr_str) { '2810 Derby St, Berkeley, CA, United States' }
    let(:delivery_time) { '06/06/2015 12:15 PM' }

    it "sets current time of time zone" do
      address = VCR.use_cassette('retrieve_address #{addr_str}', record: :new_episodes) do
        Address.retrieve_address(addr_str)
      end

      a = { id: address.id, text: addr_str, lat: address.lat, lng: address.lng, src: :text }

      post :enter_time, { time: delivery_time }
      expect(assigns(session['dr'])).to eq("dr")
    end
  end
end

抛出错误:

expected: "dr" got: nil

expect(assigns(session['dr'])).to eq("dr")expect(assigns(session[:dr])).to eq("dr") 都不起作用

【问题讨论】:

    标签: ruby-on-rails-3 testing rspec controller


    【解决方案1】:

    试试:expect(session['dr']).to eq("dr")

    session 的值与 assigns 是分开的。

    【讨论】:

      猜你喜欢
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      相关资源
      最近更新 更多