You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel PHPUnit测试含多选框的POST请求类型错误问题

问题:Laravel PHPUnit测试多选标签提交时的类型错误

在Laravel中用PHPUnit测试文章创建功能(前端通过name="tags[]"的多选框提交多个标签ID)时,POST请求里的tags参数出现类型错误,无法让Laravel正确识别该值。

前端代码片段(create-article.blade.php)

<!-- tags -->
<div class="my-2">
    <label for="tags">Tags</label>
    <select multiple size="5"
        class="block w-auto py-1 px-2 my-2 appearance-none border border-sky-400 focus:outline-none focus:ring focus:ring-sky-400"
        name="tags[]" id="tags">
        @foreach ($tags as $tag)
            <option value="{{ $tag->id }}">{{ $tag->title }}</option>
        @endforeach
    </select>
</div>

测试代码片段(ArticleTest.php)

public function test_create_article_post(): void
{
    $user = User::factory()->accepted()->create();

    Storage::fake('test');

    $file = UploadedFile::fake()->image('avatar.jpg')->size(100);

    $tag = Tag::create([
        'title' => 'Health',
        'slug' => Str::slug(random_int(1000000000, 9999999999) . 'Health'),
        'user_id' => $user->id,
    ]);

    $response = $this->actingAs($user)
        ->post(route('admin.dashboard.create-article'), [
            "title" => "Temp Article",
            "meta_description" => "Just a temporary article.",
            "description" => "<p>Just some temporary article.</p>",
            "image" => $file,
            "tags" => "['$tag->id']", // 问题根源
        ]);

    $response->assertStatus(302);

    $this->assertDatabaseHas('articles', [
        'title' => 'Temp Article',
    ]);
}

解决方案

1. 修正测试中的tags参数类型

前端多选框name="tags[]"会向服务器提交数组类型的参数,你当前把tags传成了字符串"['$tag->id']",直接导致类型不匹配错误。

将测试代码里的tags参数改为数组形式:

"tags" => [$tag->id],

如果需要测试多选多个标签,直接在数组中添加更多ID即可:

"tags" => [$tag1->id, $tag2->id],

2. 匹配表单验证规则

在处理文章创建的表单请求验证类(或控制器的验证逻辑)中,给tags设置对应数组验证规则,确保Laravel能正确接收并校验参数:

// 示例验证规则
$validated = $request->validate([
    // 其他字段规则...
    'tags' => 'array|exists:tags,id', // 验证为数组,且每个ID都存在于tags表
    'tags.*' => 'integer', // 可选:确保每个元素是整数类型的标签ID
]);

内容的提问来源于stack exchange,提问作者Nay Aung Lin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:34:56