Laravel测试表单使用惯性



我正在努力寻找在Laravel测试表单的最佳方法。我使用惯性和Laravel强化用户帐户。

如果我在web浏览器中运行我试图测试的内容,它按预期工作,但是,当我运行测试时,我得到一个419状态响应,错误是:CSRF令牌不匹配。

根据Laravel中的惯性文档,它为我们处理CSRF保护(我猜这就是为什么在浏览器中手动运行它的原因):https://inertiajs.com/csrf-protection

下面是我当前测试注册用户的代码:

$response = $this->get('/register')
->assertStatus(200);
$response = $this->json('POST', '/register', [
'name' => 'Example Name',
'email' => 'example@example.com',
'password' => 'password',
'password_confirmation' => 'password'
]);
$response->assertCreated();

我也不确定这是否是测试表单POST请求的正确方法,所以如果这是错误的,请建议一个更好的方法来编写测试,或者如果更好地使用Laravel黄昏通过模拟用户填写表单来执行这种测试。

为了找出这是一个CSRF问题,我运行:

$response->dump();

任何建议都非常感谢。

你必须使用POST方法来提交你的表单。

验证您的注册是否成功的一个选项是使用assertDatabaseHas()和用户数据数组。

$this->post('/register', [
'name' => 'Example Name',
'email' => 'example@example.com',
'password' => 'password',
'password_confirmation' => 'password'
])->assertStatus(302);
$this->assertDatabaseHas('users', [
'name' => 'Example Name',
'email' => 'example@example.com'
]);

相关内容

  • 没有找到相关文章

最新更新