Rspec:存根控制器动作

时间:2014-03-31 16:35:53

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

我正在为一个控制器编写请求规范,我想要通过AJAX调用另一个控制器的方法。 AJAX调用中的控制器操作用于对地址进行地理定位,并且与请求的其余部分无关。控制器操作总是不呈现任何内容。

我试过了:

before :each
  AddressesController.any_instance.stub(:update).and_return nil
end

然而,这给了我一个错误:

Failure/Error: Unable to find matching line from backtrace
 ActionView::MissingTemplate:
   Missing template addresses/update, application/update

该操作不存在任何视图模板,因为它始终不呈现任何内容。

有没有办法可以完全删除其他控制器的操作,或者我是否需要将该方法的内部结构反过来?

2 个答案:

答案 0 :(得分:0)

有关详细说明,请参阅this thread。就像你提到的那样,你应该反省方法的内部结构。

答案 1 :(得分:0)

您将无法在请求规范中存根控制器操作。但是,您可以存根AJAX请求,以便永远不会达到控制器操作。 Webmock是个不错的选择。