Как можно смоделировать метод контроллера laravel, чтобы проверить, получил ли он вызов определенного метода с соответствующими параметрами
Я использую laravel 5.4 и у меня есть маршрут в моем файле api.php, как показано ниже:
Route::middleware('auth:api')->post('/message', 'MessagesController@store');
Итак, сначала давайте просто скажем, что я хотел проверить, что когда я делаю пост-вызов 'api/message', предполагается, что вызывается метод store().
Ниже мой тестовый код, который я попробовал:
$mock = \Mockery::mock(MessagesController::class);
$mock->shouldReceive('store')->once();
$this->app->instance(MessagesController::class, $mock);
$response = $this->call('POST','api/message',[
'receiver_id' => $receiver->id,
'message' => 'Testing OneSignal - unit test'
]);
\Mockery::close();
Когда я запускаю тест, я получаю следующую ошибку в терминале:
1)Tests\Feature\NotificationTest::a_onesignal_notification_is_sent_when_a_new_message_is_sent
Mockery\Exception\InvalidCountException: Method store() from
Mockery_1_App_Http_Controllers_MessagesController should be called
exactly 1 times but called 0 times.
Я не собираюсь проверять, вызывается ли метод store(), и я знаю, что у меня есть другие способы обойти это. В методе store я делегирую метод одной из характеристик, которая в результате возвращает вызов curl, я хотел бы проверить, получает ли этот метод предполагаемые параметры.
Заранее спасибо за помощь.