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