Макет интерфейса Laravel

#laravel #phpunit

#laravel #phpunit

Вопрос:

скажите мне, как вы можете высмеять интерфейс. В противном случае вы заменяете интерфейс реализованным классом, тогда тест проходит. Самое интересное, что код работает с интерфейсом.

Суть

С интерфейсом я получаю сообщение об ошибке:

 MockeryExceptionInvalidCountException : Method send(<Any Arguments>) from Mockery_0_App_Services_SmsNotification_SmsInterface should be called
 exactly 1 times but called 0 times
 

Как мне реализовать тест?

Ответ №1:

В строке 36 из ExampleTest.php,

 $user->notify(new CreateUploadUpdateTask(new SmsMessage()));
 

Метод notify() происходит из функции Illuminate Notifications Notifiable, верно? Если это так, вы можете подделать уведомление, как описано в этой ссылке.

Кроме того, если вы отправляете уведомления с использованием фасада уведомлений, вы можете имитировать фасад, как описано в этой ссылке .

Пожалуйста, постарайтесь называть свои тестовые классы и методы как можно более описательными, чтобы можно было быстро понять, что вы пытаетесь протестировать, просто прочитав имя тестового класса или метода.