PHPUnit-尝试测试json数组中的键和值
我有以下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 到
[
{
“票号”: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,
)