"Example usage: mock := MockObject new. mock on: #selector do: [ aBlockToReturn ]." Object subclass: #MockObject instanceVariableNames: 'callbacks' classVariableNames: '' poolDictionaries: '' category: 'MockObjects' class>>new ^super basicNew initialize initialize callbacks := Dictionary new. doesNotUnderstand: aMessage ^(callbacks includesKey: aMessage selector) ifTrue: [ self performCallback: aMessage ] ifFalse: [ super doesNotUnderstand: aMessage ]. performCallback: aMessage ^(callbacks at: aMessage selector) valueWithArguments: aMessage arguments on: aSymbol do: aBlock callbacks at: aSymbol put: aBlock