我有一个laravel API项目。有很多安全性数据,不应在API响应中为用户显示。如果只有响应结构与测试中的预设结构完全相同,我需要某种方式编写测试,在其中我可以获得true
。
因此,如果我的测试结构为$structure = [ 'data' => ['_id', 'user' => ['name', 'email], 'title'];
,但作为回应,我收到的字段或多或少,则需要使该测试失败。
在我只找到的文档中:
assertJson
-期望确切的键=>值,但是我只需要一个键;
assertJsonStructure
-即使某些字段丢失或响应包含其他一些字段,也返回true。
答案 0 :(得分:0)
$validator = new \Opis\JsonSchema\Validator();
$result = $validator->dataValidation($json, $schema);
PHPUnit::assertTrue($result->isValid(), "Mismatch json schema");
对于您的情况,请详细了解required
和additionalProperties
:https://docs.opis.io/json-schema/1.x/object.html#required
您的json方案可能类似于:
{
"type": "object",
"additionalProperties": false,
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
}
}