Laravel 8 测试技巧:如何测试授权以后的跳转页面
常见场景:你拥有不同的角色,并且你想测试用户角色在登录到不同的端点后重定向。
在这里,我添加了一个使用角色作为用户列的简单示例,但是你可以直接从 model/User 模型中添加关系(多对多关系),然后添加 pivot 模型作为角色,或者只使用 Jetstream 。
你可以根据需要添加任意复杂度,但我们将保持简单,下面是代码示例:
use RefreshDatabase;
/** @test */
public function test_app_admin_can_login_and_go_to_admin_dashboard()
{
$user = factory(User::class)->create([
'role' => 'admin'
]);
session()->setPreviousUrl('/login');
$response = $this->post('/login', [
'email' => $user->email,
'password' => 'password',
]);
$response->assertLocation(route('admin.dashboard'));
}
代码说明:
- 首先在模型工厂中创建用户
- 然后添加一个 session 会话来建立当前 url
- 然后登录响应数据( 模型工厂中的默认密码为 「 password 」)
- 如果你使用命名路由,在登录后根据需要使用路由来重定向位置
注意:Laravel 8 中的用户工厂语法进行了大的更改,因此请记住这一点。
感谢阅读。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。