Как можно смоделировать метод контроллера 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, я хотел бы проверить, получает ли этот метод предполагаемые параметры.

Заранее спасибо за помощь.

0 ответов

Другие вопросы по тегам