У меня есть класс, который использует глобальную функцию события () Laravel для запуска отдельного события при изменении модели. Единственный способ, которым я смог предотвратить это событие во время модульных тестов, - это фактически создать пространство имен, объявить новую функцию event () в самом тесте и заставить его ничего не делать. Это работает, но это не кажется мне симпатичным решением. Я просмотрел документы Laravel и вижу, что некоторые люди успешно использовали Event :: fake () внутри теста, но когда я пытаюсь это сделать, я получаю:
BadMethodCallException: Method Mockery_0_Illuminate_Contracts_Events_Dispatcher::until() does not exist on this mock object
Я нахожусь на Laravel 5.4,Есть ли более чистый способ предотвратить запуск этого события во время теста? Мне действительно не нравится идея объявления пустой функции namespaced event ().
РЕДАКТИРОВАТЬ:
Класс, который я тестирую, является классом UserDomain. В одной части логики он вызывает глобальный метод события () Laravel:
event(new RoleChanged($this->user));
Чтобы подавить это от запуска в тесте, я пробовал Event :: fake (), а также пытался использовать черту WithoutEventsи его метод безEvents (). Ни одна из них не работает, и та же самая ошибка, о которой я упоминал выше, возникает оба раза.