RSpec:转换为 mocks/stubs 的新 "allow" 语法时出现问题

RSpec: Problems converting to the new "allow" syntax for mocks/stubs

我正在努力学习 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))

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

希望得到一些指导。

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

在不了解 build_stubbed 的情况下,我希望它看起来像:

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