rspec视图存根和部分

Joh*_*all 4 rspec views partials stubs

我正在使用RSpec(Rails 3.2.8上的2.12)测试视图.我正在使用CanCan有条件地在页面上显示某些元素.这需要一个控制器方法'current_user'.在我的一些规范中,我已经能够存根current_user,例如.controller.stub(:current_user).and_return(etc)或view.stub.etc.

这适用于我的一些规格.但我有一对夫妇在哪里工作,我不明白为什么.

它不工作的两个规范测试一个视图,它调用一个部分,在部分内部我访问'current_user'作为一个方法.错误是

undefined local variable or method `current_user' 
Run Code Online (Sandbox Code Playgroud)

所以我想我的问题是如何正确地存根方法,以便可以在局部内部访问它们.

应该怎么做?

Chr*_*erg 10

控制器存根将无法工作,因为您没有测试控制器,而是在测试视图.只需使用视图存根:

view.stub(:current_user).and_return(etc)
Run Code Online (Sandbox Code Playgroud)

这应该在部分视图和视图中工作.

请参阅:传递存储辅助方法的视图规范

  • 啊! 我解决了这个问题,我需要同时拥有view.stub(:current_user)和controller.stub(:current_user).在视图中对current_user的任何引用,都会进入view.stub,并且CanCan能力类中对current_user的任何引用都会转到controller.stub (2认同)