如何使用 Codeception 查看两层深度的 ResponseContainsJson?
How to seeResponseContainsJson two levels deep with Codeception?
我是 Codeception 的新手,我正在尝试使用它来测试我的 Web 服务。现在我正试图弄清楚如何深入挖掘并测试来自不同 API 点的输出。例如,我正在尝试创建一个用户并检查响应是否包含必要的详细信息。
CreateUserCept.php
<?php
$faker = Faker\Factory::create();
$I = new ApiTester($scenario);
$I->wantTo('create a new user');
$I->haveHttpHeader('Authorization', 'Bearer ' . file_get_contents('tests/api/token'));
$I->sendPost('users', [
"first_name" => "Test",
"last_name" => "Test",
"email" => 'test@test.com',
"password" => "testing",
"role" => "1"
]);
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
响应类似于:
{
"status": "success",
"data": {
"first_name": "Test",
"last_name": "Test",
"email": "test@test.com",
"updated_at": "2015-11-12 09:08:31",
"created_at": "2015-11-12 09:08:31",
"id": 54
},
"errors": null,
"message": "Resource Created Successfully"
}
现在我可以做这样的断言:
$I->seeResponseContainsJson(['status' => 'success']);
它就像一个魅力,但当我这样做时:
$I->seeResponseContainsJson(['data.first_name' => 'Test']);
失败了。深入研究这些内容并检查 JSON 响应是否正确的正确方法是什么?
这终于对我有用了:
$I->seeResponseContainsJson(['data' => [
'first_name' => 'Test'
]]);
我是 Codeception 的新手,我正在尝试使用它来测试我的 Web 服务。现在我正试图弄清楚如何深入挖掘并测试来自不同 API 点的输出。例如,我正在尝试创建一个用户并检查响应是否包含必要的详细信息。
CreateUserCept.php
<?php
$faker = Faker\Factory::create();
$I = new ApiTester($scenario);
$I->wantTo('create a new user');
$I->haveHttpHeader('Authorization', 'Bearer ' . file_get_contents('tests/api/token'));
$I->sendPost('users', [
"first_name" => "Test",
"last_name" => "Test",
"email" => 'test@test.com',
"password" => "testing",
"role" => "1"
]);
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
响应类似于:
{
"status": "success",
"data": {
"first_name": "Test",
"last_name": "Test",
"email": "test@test.com",
"updated_at": "2015-11-12 09:08:31",
"created_at": "2015-11-12 09:08:31",
"id": 54
},
"errors": null,
"message": "Resource Created Successfully"
}
现在我可以做这样的断言:
$I->seeResponseContainsJson(['status' => 'success']);
它就像一个魅力,但当我这样做时:
$I->seeResponseContainsJson(['data.first_name' => 'Test']);
失败了。深入研究这些内容并检查 JSON 响应是否正确的正确方法是什么?
这终于对我有用了:
$I->seeResponseContainsJson(['data' => [
'first_name' => 'Test'
]]);