Имитирование логики политики в тесте
Похоже на встроенный хелпер тестирования Laravel
Недавно я рассказывал о подходе, который использовал для тестирования логики политики. Если вы не читали, прочтите эту статью.
Такой подход мне нравится тем, что позволяет сфокусировать функциональные тесты на том, что делает контроллер, но при этом даёт уверенность в том, что логика политики подключена правильно.
Участник списка рассылки Nolan Phillips шагнул дальше. Он создал метод fake()
, принимающий массив методов, и добавил его в базовый класс Policy
.
Прежде чем продолжить, прочтите его краткую статью.
С его подходом теперь можно делать нечто подобное в своих тестах:
SomePolicy::fake([ 'viewAny' => false, 'view' => true, ]);
Здесь есть две вещи, которые мне нравятся:
- Это очень похоже на дух других хелперов тестирования, предоставляемых Laravel. На самом деле, я хотел бы, чтобы Laravel использовал подобный подход прямо во фреймворке.
- Это немного проще для чтения, особенно если нужно имитировать более одного метода политики.
Я еще не использовала этот подход ни в одном из проектов, но идея показалась очень удачной, и захотелось поделиться ею с вами.