【问题标题】:How to test via rspec that session variables updated in controller如何通过 rspec 测试控制器中更新的会话变量
【发布时间】:2013-08-10 00:11:18
【问题描述】:

我正在尝试使用 rspec 编写一个测试来测试会话变量是否正确更改:

这是我要测试的 GamesController 的一部分:

def change_player
  if session[:player] == 0
    session[:player] = 1
  else
    session[:player] = 0
  end    
end

这是我的 game_spec.rb 文件:

require "spec_helper"

describe GamesController do
 describe "#change_player" do
   it "should change player to 1" do
     session[:player] = 0

     get :change_player

     assigns(session[:player]).should == 1
   end
 end
end

这是我运行测试时收到的错误消息:

Failures:

  1) GamesController#change_player should set player to 0
     Failure/Error: session[:player] = 0
     NameError:
       undefined local variable or method `session' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x00000103b3b0d8>
     # ./spec/features/game_spec.rb:6:in `block (3 levels) in <top (required)>'

Finished in 0.01709 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/features/game_spec.rb:5 # GamesController#change_player should set player to 0

谢谢

【问题讨论】:

    标签: ruby-on-rails rspec controller


    【解决方案1】:

    问题是 rspec 不知道这是一个控制器测试(不在 spec/controllers 文件夹中)

    你需要指定

    describe GamesController, :type => :controller do
        ...
    end
    

    【讨论】:

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