试图在Rspec 3中为模型存根链接方法

时间:2014-12-12 06:45:31

标签: ruby-on-rails rspec chaining

我是Rspec的新手,并试图找到我的答案,但它一直指着我使用stub_chain,但似乎它在Rspec3上已被弃用。我有以下我试图存根:

active_automation = Client.automation_active_status.new_client

客户端是我的模型,automation_active_status是我的客户端模型中的以下内容

scope :automation_active_status, -> { where(automation_status: true) }

new_client是我想调用的属性,用于进一步过滤我的结果

我试图实现stub_chain,但是没有用。我的目标是让以下工作:

Client.any_instance( black_box_I_can_not_figure_out ).returns[something]

谢谢。

2 个答案:

答案 0 :(得分:4)

我相信您可能正在寻找allowreceive_message_chain

allow(Client).to receive_message_chain(:automation_active_status, :new_client) { [thing_to_return] }

这将保留允许它的方法,并返回传递它的块中的任何内容。希望能帮助到你。

答案 1 :(得分:-1)

Client.stub_chain(:automation_active_status, :new_client).and_return([thing-to-return])应该可以帮到你想要的地方。

此外,any_instance应该用于类的实例。例如,Client.first将是一个实例,但Client是类(并且您可以直接在其上存根)。