title: Has been called with object assertion
body: <p>Function I'm spying on, receives object as an argument. I need to assert that the function been called with certain properties of the object. </p>
  
  <p>e.g: my SUT has: </p>
  
  <pre><code>function kaboom() {
  
      fn({ 
          foo: 'foo', 
          bar: 'bar', 
          zap: function() { ... },
          dap: true
       });
  }
  </code></pre>
  
  <p>and in my test I can do this:</p>
  
  <pre><code>fnStub = sinon.stub();
  kaboom();
  expect(fnStub).to.have.been.called;
  </code></pre>
  
  <p>and that works (it's good to know that <code>fn</code>'s been called). Now I need to make sure that the right object has been passed into the function. I care about only  <code>foo</code> and <code>bar</code> properties, i.e. I have to set match for specific properties of the argument. How?</p>
  
  <p>upd: sinon.match() seems to work for simple objects. Let's raise the bar, shall we? </p>
  
  <p>What if I want to include <code>zap</code> function into assertion? How do I make that work?</p>