There is a 'Client service' that I want to mock. An 'Event listener' is registered to this client via closure. When it matches an event I saved 'event' details to a referenced array variable.
I try to mock it but cannot find the proper way, controller function returns empty array.
Controller function:
$response = array();
$this->client->registerEventListener(
function (EventMessage $event) use (&$response) {
$response = array(
'name' => $event->getName(),
'device' => $event->getDevice(),
'message' => $event->getMessage()
);
}
);
...
return $response;
Test file:
$eventMessage = m::mock('EventMessage');
$eventMessage->shouldReceive('getName')->atLeast()->times(1)->withNoArgs()->andReturn("Name");
$eventMessage->shouldReceive('getDevice')->atLeast()->times(1)->withNoArgs()->andReturn("Device");
$eventMessage->shouldReceive('getMessage')->atLeast()->times(1)->withNoArgs()->andReturn("Message");
$client = m::mock('Client');
$client->shouldReceive('registerEventListener')
->atLeast()->times(1)
->with(
m::on(function($event) use ($eventMessage){
$event = $eventMessage;
return true;
})
->andReturn();
Aucun commentaire:
Enregistrer un commentaire