4

我正在使用 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' 

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

应该怎么做?

4

1 回答 1

10

控制器存根不起作用,因为您不是在测试控制器,而是在测试视图。只需使用视图存根:

view.stub(:current_user).and_return(etc)

这应该在部分和视图中起作用。

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

于 2012-12-29T20:44:35.760 回答