RSpec - 如何存根控制器方法

时间:2011-11-08 20:03:11

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

我有一个控制器,它有一些特殊的身份验证,因为它实际上是特定远程系统可用的API。

在RSpec(2.7)中,我想绕过该身份验证,但我似乎无法使其正常工作。从我读到的,我应该做这样的事情:

controller.stub!(:restrict_soa_access).and_return(true)

但如果我这样做,我就得到:

spec/controllers/soa/user_controller_spec.rb:42: undefined method `stub!'
for #<RSpec::Core::Hooks::AfterHooks:0xb673a8dc> (NoMethodError)

在回复评论时,我还尝试使用Soa::UserController.stub!,它给出了相同的错误,还有@controller.stub!,当我得到nil的未定义方法时:NilClass。

我没有抄袭任何其他东西。我需要做些什么来启用存根或者我的存根代码是错误的吗?

1 个答案:

答案 0 :(得分:3)

我遇到了类似的问题,通过以下要求解决了这个问题:

require 'rspec/mocks'
require 'rspec/mocks/spec_methods'
require 'rspec/mocks/standalone'

你能报告一下这是否适合你?