PHPUnit-尝试测试json数组中的键和值

PHPUnit-尝试测试json数组中的键和值,php,json,laravel,phpunit,Php,Json,Laravel,Phpunit,我有以下Json数组: [ { “票号”:131, “票证主题”:“准”, “票务内容”:“然而,今天一切都很奇怪。”就在这时,她相当胆怯地走向票务,对它说, “票名”:“小艾伦·约斯特教授”, “票证\电子邮件”:sosinski@example.org", “票证状态”:0, “创建时间”:“2021-04-19 16:53:33”, “更新时间:2021-04-19 16:53:33” } ] 我正在尝试编写一个功能测试,以检查它是否具有“ticket\u status”键和相应的0 到

我有以下Json数组:

[
{
“票号”:131,
“票证主题”:“准”,
“票务内容”:“然而,今天一切都很奇怪。”就在这时,她相当胆怯地走向票务,对它说,
“票名”:“小艾伦·约斯特教授”,
“票证\电子邮件”:sosinski@example.org",
“票证状态”:0,
“创建时间”:“2021-04-19 16:53:33”,
“更新时间:2021-04-19 16:53:33”
}
]
我正在尝试编写一个功能测试,以检查它是否具有“ticket\u status”键和相应的
0

到目前为止,在我的测试文件中,我有以下代码:

<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;

class OpenTicketTest extends TestCase
{
    /**
     * A basic feature test example.
     *
     * @return void
     */
    public function testOpenTickets()
    {
        $this->get(route('tickets.open'))
            ->assertStatus(200)
            ->assertJsonStructure([
                '*' => [
                    'ticket_id',
                    'ticket_subject',
                    'ticket_content',
                    'ticket_name',
                    'ticket_email',
                    'ticket_status',
                    'created_at',
                    'updated_at'
                ]
            ])->assertJson([
                'ticket_status' => 0
            ]);
    }
}
有人对检索所需结果所使用的正确语法有什么想法吗

谢谢


罗伯特

你的考试一点问题都没有。测试表明它没有返回
ticket\u status=0
,事实上它有
[]
作为回复(无数据)。。。所以你的控制器不好。此外,如果您正在进行测试(无论是单元测试还是功能测试),请不要执行
路由('xxxxx')
,因为如果路由是
/asdasd
,而您不希望这样做,
路由('xxxx')
仍将通过,因此您没有断言正确的URL。还有一件事,无需执行
assertStatus(200)
,您可以直接忽略它,或者您可以使用
assertOk()
(即
200
)或
assertSuccessful()
200
=status)
Unable to find JSON:

[{
    "ticket_status": 0
}]

within response JSON:

[[]].


Failed asserting that an array has the subset Array &0 (
    'ticket_status' => 0
).
--- Expected
+++ Actual
@@ @@
 array (
-  'ticket_status' => 0,
 )