如何测试application_controller中的常用方法

时间:2013-06-05 18:30:55

标签: ruby-on-rails rspec

我有一个auth方法,想把它放在我的application_controller中。

class ApplicationController < ActionController::Base  
  helper_method :check_cred

  def check_cred
    "within check cred"
  end

但如果我这样做

require 'spec_helper'

describe ApplicationController do
  it 'should check_cred', task050: true do
    check_cred.should == 'within check cred'
  end
end

我明白了:

 undefined local variable or method `check_cred' for #<RSpec::Core::ExampleGroup::Nested_9:0x007ff5e3e40558>

我如何调用这样的方法进行测试?

THX

1 个答案:

答案 0 :(得分:0)

RSpec控制器规范包装ActionController::TestCase::Behavior,它提供了一些在测试期间使用的实例变量:

  

特殊实例变量

     

ActionController :: TestCase还将自动提供以下实例   用于测试的变量:

     

@controller:         将要测试的控制器实例。

所以你可以做到以下几点:

it 'should check_cred', task050: true do
  @controller.check_cred.should == 'within check cred'
end

或者,您可以将此帮助程序方法移出到单独的帮助程序模块中,并使用RSpec helper spec执行测试,这可能是构建此测试的更好方法。