rspec/rspec-mocks — pull request #367 by timcowlishaw (2013-07-16 13:16:27+00:00)
Title: allow has_received to take a block to match against passed arguments.

As discussed in @rspec/rspec-mocks#364, it'd be great to be able to pass a block to has_received in order to make more specific assertions about the arguments with which the mocked method was called, for example:
```ruby
let(:missile_silo) { double(:missile_silo, :fire_missiles! => true) }

it "calls the missile silo with a user authorized to fire missiles" do
missile_command = MissileCommand.new(missile_silo)
missile_command.start_war!
expect(missile_silo).to have_received(:fire_missiles!) do |authorizing_user|
expect(authorizing_user.rank).to eq(:commander)
end
end
```

This patch implements this behaviour, and adds specs for argument matching in this style on both the Receive and HasReceived matchers.