【发布时间】:2020-06-05 10:42:52
【问题描述】:
当我想使用 PHPUnit 测试策略时,它不能按预期工作,它基于 novaServiceProvider 中的门方法工作
protected function gate()
{
Gate::define('viewNova', function () {
return true;
});
}
它只命中这个方法所有策略都被忽略,似乎在使用API时这个方法会覆盖所有策略,
但是,当使用 web 时,所有策略都按预期工作,并且似乎根本没有使用此方法
如何使策略在 PHPUnit 测试中按预期工作
public function test_view_any()
{
create(Branch::class, ['name' => 'admin',]);
$user = create(User::class, ['branch_id' => 1,]);
$this->signIn($user);
$role = create(Role::class, ['name' => 'admin']);
$user->roles()->attach($role->id);
$this->get('/resources/customers')
->assertStatus(200);
}
这是测试
public function viewAny(User $user)
{
return $user->hasPermission('customers-index-all')
|| $user->hasPermission('customers-index-branch')
|| $user->hasPermission('customers-index-self');
}
这就是政策
如果用户具有在 CustomerPolicy viewAny 方法中定义的所需角色,现在测试必须为绿色,但实际发生的情况是,即使我在 viewAny 方法中返回 true,它也会给出 预期的状态代码 200 但已收到
【问题讨论】:
-
展示你的单元测试以及你如何称呼它们?
-
我已经添加了必须命中的测试方法和策略方法以及发生了什么的详细信息。
标签: laravel laravel-nova