Stubben¶
Mit dem Stubben kann der Rückgabewert einer Methode vorgegeben werden.Eine gestubbte Methode hat keine Invokation Rule (wie gemockte Methoden). Wird eine gestubbte Methode nicht aufgerufen, wird folglich keine Exception geworfen.
<?php
$mock = Mokka::mock(SampleClass::class);
// getFoo() should return 'baz' when called with the argument 'bar'
Mokka::when($mock)->getFoo('bar')->thenReturn('baz');
echo $mock->getFoo(): // => NULL
echo $mock->getFoo('bar'); // => 'baz'
Hier kann auch das in Mocken eingeführte AnythingArgument verwendert werden:
<?php
// getFoo() should always return 'baz'
Mokka::when($mock)->getFoo(Mokka::anything())->thenReturn('baz');
echo $mock->getFoo('foo'): // => 'baz'
echo $mock->getFoo('bar'); // => 'baz'
Stubs und Mocks kombinieren¶
Mocks und Stubs können kombiniert werden, um einen Rückgabewert zu setzen und zusätzlich sicherzustellen, dass die Methode aufgerufen wird:
<?php
$mock = Mokka::mock(SampleClass::class);
// getFoo() should return 'baz' when called with the argument 'bar'
Mokka::when($mock)->getFoo('bar')->thenReturn('baz');
// also make sure that getFoo() gets called once
Mokka::verify($mock)->getFoo('bar');
echo $mock->getFoo('bar'); // => 'baz'
Exceptions werfen¶
Eine gestubbte Methode kann eine Exception werfen, anstatt einen Wert zurückzugeben:
<?php
$mock = Mokka::mock(SampleClass::class);
Mokka::when($mock)->getFoo()->thenThrow(new \InvalidArgumentException());
$mock->getBar(); // => throws exception