Я прекрасно понимаю, как работают политики, когда они берут субъект и объект, например $user->can('delete', $post)
, который вызовет PostPolicy :: delete ($ user, $ post) для определения результата.
Что яне понимаю, как работают методы типа viewAny
или create
или как их тестировать. Я не могу просто сказать $user->can('create')
сейчас, не так ли? Документация Laravel иногда является лабиринтом (не говоря уже об источнике), и я не нашел ничего о том, как тестировать методы политики вручную, когда они принимают только один аргумент $ user.
EDIT: Как подсказано в ответе, просто передайте имя класса. Тем не менее, он поставляется с одной ошибкой: это должно быть оригинальное имя класса, а не псевдоним, созданный с помощью class_alias()
, что является обычной уловкой для тинкера. Смотрите здесь:
>>> class_alias(\App\User::class, 'U')
=> true
>>> $u->can('viewAny', \App\User::class)
=> true
>>> $u->can('viewAny', U::class)
=> false