为什么我在 laravel 中收到 "CSRF token mismatch" 而 运行 测试?
Why I receive "CSRF token mismatch" while running tests in laravel?
我想 运行 我的测试没有收到 "CSRF token mismatch" 异常。在 laravel 文档中指出:
The CSRF middleware is automatically disabled when running tests.
抛出异常的代码行如下所示:
$response = $this->json('POST', route('order.create'), [
'product_id', $product->id
]);
对于 运行ning 测试,我正在我的 zsh 终端中工作:
php artisan test --env=testing
这是我的测试class:
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Tests\TestCase;
class SessionCartTest extends TestCase
{
public function testExample()
{
$product = \App\Product::inRandomOrder()->first();
$response = $this->postJson(route('order.insert'), [
'product_id' => $product->id,
]);
$response->assertStatus(200); // here I receive 419
}
}
我做错了什么,我该如何解决?我正在使用 laravel 7.
可能 APP_ENV
没有设置为 testing
。
您可以在 php 命令之前在命令行中设置 ENV 变量。
因此,根据您的情况,将环境设置为测试,并通过以下方式 运行 artisan 命令:
APP_ENV=testing php artisan test
您的数据数组有误。尝试以下更改:
$response = $this->postJson(route('order.insert'), [
'product_id' => $product->id, // use the arrow notation here.
]);
我 运行 遇到这个问题 x 次,每次我都通过 运行 解决它:
php artisan config:clear
我想 运行 我的测试没有收到 "CSRF token mismatch" 异常。在 laravel 文档中指出:
The CSRF middleware is automatically disabled when running tests.
抛出异常的代码行如下所示:
$response = $this->json('POST', route('order.create'), [
'product_id', $product->id
]);
对于 运行ning 测试,我正在我的 zsh 终端中工作:
php artisan test --env=testing
这是我的测试class:
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Tests\TestCase;
class SessionCartTest extends TestCase
{
public function testExample()
{
$product = \App\Product::inRandomOrder()->first();
$response = $this->postJson(route('order.insert'), [
'product_id' => $product->id,
]);
$response->assertStatus(200); // here I receive 419
}
}
我做错了什么,我该如何解决?我正在使用 laravel 7.
可能 APP_ENV
没有设置为 testing
。
您可以在 php 命令之前在命令行中设置 ENV 变量。
因此,根据您的情况,将环境设置为测试,并通过以下方式 运行 artisan 命令:
APP_ENV=testing php artisan test
您的数据数组有误。尝试以下更改:
$response = $this->postJson(route('order.insert'), [
'product_id' => $product->id, // use the arrow notation here.
]);
我 运行 遇到这个问题 x 次,每次我都通过 运行 解决它:
php artisan config:clear