【问题标题】:RSpec: how can I spy on interactions with an existing object?RSpec:如何监视与现有对象的交互?
【发布时间】:2015-10-07 08:30:57
【问题描述】:

我有一个现有的存根对象,在我的测试中用作协作者:

cf_client = Aws::CloudFormation::Client.new(:stub_responses => true)
stack = described_class.new("name", cf_client)

存根对象 (cf_client)不是使用 rspec-mocks 创建的;这是aws-sdk gem 提供的假实现,并且具有有用的属性。

但是,它不提供消息验证,所以我希望包装在一个记录接收到的消息的代理中,这样我可以稍后验证它们,同时仍然委托给包装的对象,例如

cf_client = proxy_spy(Aws::CloudFormation::Client.new(:stub_responses => true))
stack = described_class.new("name", cf_client)

stack.create

expect(cf_client).to have_received(:create_stack)

我想要/需要的是proxy_spy 方法。这样的事情存在吗?我可以在这里使用 RSpec 的验证代理吗?

【问题讨论】:

    标签: ruby rspec


    【解决方案1】:

    您正在寻找and_call_original

    cf_client = Aws::CloudFormation::Client.new(:stub_responses => true)
    expect(cf_client).to_receive(:create_stack).and_call_original
    stack = described_class.new("name", cf_client)
    stack.create
    

    【讨论】:

      猜你喜欢
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      相关资源
      最近更新 更多