Aha, yes - I noticed those! My reasoning for adding additional specs was to document the use case where you use the block to set expectations on the arguments passed, rather than to provide a return value from the mock (which is the only sensible use-case for passing a block to has_received). Happy to remove, or to move to a more sensible location (especially given that the receive matcher isn't actually responsible for passing the args, as you point out).