【问题标题】:rspec view stubs and partialsrspec 查看存根和部分
【发布时间】:2012-12-14 15:14:57
【问题描述】:

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

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

应该怎么做?

【问题讨论】:

    标签: rspec views partials stubs


    【解决方案1】:

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

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

    这应该在局部和视图中都有效。

    见:passing view spec that stubs a helper method

    【讨论】:

    • 这是我尝试的第一件事,但没有奏效,所以我尝试了 controller.stub,但也没有奏效。所以现在我很迷惑。当且仅当它是一个正在测试的一级视图时,我才能让 view.stub(etc) 工作。如果视图调用了部分,则该方法在部分中不可用。
    • 啊!我解决了,我需要同时拥有 view.stub(:current_user) 和 controller.stub(:current_user)。视图中对 current_user 的任何引用都通过 view.stub,而 CanCan 能力类中对 current_user 的任何引用都通过 controller.stub
    猜你喜欢
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2019-02-16
    • 2012-12-29
    • 2020-08-05
    • 2012-07-27
    相关资源
    最近更新 更多