0

我有一个 laravel API 项目。有很多安全数据不应该在 API 响应中显示给用户。true如果只有响应结构与测试中的预设结构完全相同,我需要一些方法来编写测试。

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

在我发现的文档中:

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

4

1 回答 1

1

使用Opis JSON 模式

$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"
        }
      }
}
于 2019-10-03T14:02:53.790 回答