RSpec / Rails - 当我测试一个子类控制器时,如何测试调用ApplicationController中的方法?

3

标题已经说明了一切。

我有一个控制器操作,在其中执行一些操作,然后调用在ApplicationController中定义的方法。

我如何测试它是否被调用?

controller.should_receive(:the_method_name)不起作用。
ApplicationController.should_receive(:the_method_name)也不起作用。

正确的语法是什么?

谢谢。


也许你正在寻找存根?http://rubydoc.info/gems/rspec-mocks/frames - user745235
1
我不这么认为。我不想桩方法;我想测试它是否被调用。 - johnnycakes
2个回答

1

我认为你可以使用匿名控制器来测试你的ApplicationController,查看文档。


文档描述了如何在匿名控制器上存根方法,而不是从中继承的ApplicationController。 - ybakos

0

使用Gerep建议的AnonymousController,并调用controller.should_receive(:the_method_name)即可。

测试中的位置很重要,以确保测试能够成功通过。举个例子:

describe 'my test' do
  before do
    controller.should_receive(:the_method)
    get :action
  end
  it { should render_template(:your_template) }
end

这个例子应该通过测试,也应该调用:the_method


你能详细说明一下你前六个单词的意思吗? - Zach
但是 controller 然后指的是 AnonymousController 的实例,而不是 ApplicationController。 - ybakos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接