我是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]
谢谢。
答案 0 :(得分:4)
我相信您可能正在寻找allow
和receive_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
是类(并且您可以直接在其上存根)。