尝试在 Rspec 3 中为模型存根链式方法

mde*_*ere 3 rspec ruby-on-rails chaining

我对 Rspec 真的很陌生,并试图找到我的答案,但它一直指向我使用 stub_chain,但它似乎在 Rspec3 上已被弃用。我有以下我想存根:

active_automation = Client.automation_active_status.new_client
Run Code Online (Sandbox Code Playgroud)

其中 Client 是我的模型,automation_active_status是我的 Client 模型中的以下内容

scope :automation_active_status, -> { where(automation_status: true) }
Run Code Online (Sandbox Code Playgroud)

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

我试图实现 stub_chain 但这没有用。我的目标是使以下内容起作用:

Client.any_instance( black_box_I_can_not_figure_out ).returns[something]
Run Code Online (Sandbox Code Playgroud)

谢谢你。

dou*_*mms 5

我相信您可能正在寻找allowreceive_message_chain

allow(Client).to receive_message_chain(:automation_active_status, :new_client) { [thing_to_return] }
Run Code Online (Sandbox Code Playgroud)

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