php - 如何使用 Codeception 查看两层深度的 ResponseContainsJson?

标签 php laravel laravel-5 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'
]]);

关于php - 如何使用 Codeception 查看两层深度的 ResponseContainsJson?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33667818/

相关文章:

html - 使用相同的 Laravel 布局时的不同背景图像

javascript - Laravel 5 网站中的 CSS 和 JavaScript 文件

php - laravel 5.2 如何在一种方法中设置 session 并在另一种方法中获取 session 数据

php - SSL 在 laravel 5.5 上

php - 使用php创建Excel工作表

php - 如何使用 Laravel 进行子查询?

php - Laravel Controller 不传递变量来查看

php - 安全PHP登录SQL注入(inject)

javascript - InnerHTML 创建问题,未按正确顺序加载,可能存在处理问题

laravel - 使用 laravel 和 vuejs 导出 Excel