RSpec:我如何监视与现有对象的交互?

时间:2015-10-07 08:30:58

标签: ruby rspec

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

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

使用rspec-mocks创建存根对象(cf_client ;它是由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的验证代理吗?

1 个答案:

答案 0 :(得分:1)

您正在寻找and_call_original

// Get input on dblClick
$(".disabled.transparent").dblclick(function () {
  $(this).addClass('focus').removeClass('disabled transparent');
  $(this).find('input[type=text]').addClass('active').focus();
});

// Disabled input on blur
$('.ui.input').on('blur', '.active', function () {
  $('.ui.input').addClass('disabled transparent');
});

 // Show trash icon on hover
$('.element').mouseover(function() {
  $(this).find('.trash').css('display', 'block');
})  

// Would like to keep trash icon on input focus and hide icon on blur
$('.element').mouseleave(function(event) {
  if($(this).find('input').is(":focus")) {
    event.preventDefault();
  } else {
  $(this).find('.trash').hide();
  }
});