Laravel测试。声明确切的JSON结构

时间:2019-10-03 13:28:36

标签: laravel phpunit laravel-testing

我有一个laravel API项目。有很多安全性数据,不应在API响应中为用户显示。如果只有响应结构与测试中的预设结构完全相同,我需要某种方式编写测试,在其中我可以获得true

因此,如果我的测试结构为$structure = [ 'data' => ['_id', 'user' => ['name', 'email], 'title'];,但作为回应,我收到的字段或多或少,则需要使该测试失败。

在我只找到的文档中:

assertJson-期望确切的键=>值,但是我只需要一个键; assertJsonStructure-即使某些字段丢失或响应包含其他一些字段,也返回true。

1 个答案:

答案 0 :(得分:0)

使用Opis JSON Schema

$validator = new \Opis\JsonSchema\Validator();
$result = $validator->dataValidation($json, $schema);
PHPUnit::assertTrue($result->isValid(), "Mismatch json schema");

对于您的情况,请详细了解requiredadditionalPropertieshttps://docs.opis.io/json-schema/1.x/object.html#required

您的json方案可能类似于:

{
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "integer"
        }
      }
}