【问题标题】:RSpec: Problems converting to the new "allow" syntax for mocks/stubsRSpec:转换为模拟/存根的新“允许”语法时出现问题
【发布时间】:2015-05-11 16:29:19
【问题描述】:

我正在尝试学习 rspec 并将我所学的知识应用到现有的 Rails 应用程序中。

我正在尝试创建一个名为“current_user”的用户的模拟

这行代码我基本走完了

     controller.stub(:current_user).and_return(build_stubbed(:user))

并将其放在我的测试之前(所有这些都需要定义 current_user)

这行得通。但是

  1. 我知道这种语法已被弃用,我应该使用

      allow().to receive().and_return()
    

语法,但我似乎无法将其转换为新语法并使其正常工作。

我试过了

    user = double("user")
    allow(user).to receive(:current_user).and_return(build_stubbed(:user))

没有成功。我现实我不知道我在做什么,需要指出正确的方向。我已经广泛寻找答案,但我怀疑这太基本了。

希望得到一些指导。

【问题讨论】:

    标签: ruby-on-rails-4 rspec stub


    【解决方案1】:

    目前,您正在为您的 controller 变量存根 current_user 方法。在您的新语法示例中,您已将存根放在 user 双对象上。

    如果不知道更多关于 build_stubbed 的信息,我希望它看起来像:

    allow(controller).to receive(:current_user).and_return build_stubbed(:user)
    

    【讨论】:

    • 这行得通。所以澄清一下,如果这是用英文写的,它的说法是......“允许控制器有一个名为 current_user 的方法并使用用户对象响应对该方法的调用”?
    • 是的,总结得很好。
    猜你喜欢
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多