RSpec:转换为模拟/存根的新“允许”语法时出现问题

时间:2015-05-11 16:29:19

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

我正在尝试学习rspec并将我正在学习的东西应用到现有的rails应用程序中。

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

我基本上采用了这行代码

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

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

这很有效。但

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

      allow().to receive().and_return()
    
  2. 语法,但我似乎无法将其转换为新语法并使其工作。

    我试过

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

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

    会感激一些指导。

1 个答案:

答案 0 :(得分:2)

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

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

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