如何使用 phpunit 测试 JsonArray 中的随机值
Posted
技术标签:
【中文标题】如何使用 phpunit 测试 JsonArray 中的随机值【英文标题】:How to test random value in JsonArray using phpunit 【发布时间】:2016-11-15 11:18:15 【问题描述】:大家好,我正在尝试测试 API 并从响应中获取特定的 json 元素,这是来自 API 的响应:
"Error": null,
"Data":
"AuthToken": "jaskdfjlsadkfjasd",
"InactiveTimeout": 20
由于 AuthToken 的值总是随机的,我无法使用此代码对其进行测试:
$this->post('/login',
[
'id'=>'1',
'password'=>'secret',
])->seeJson([
"Error" => null,
'Data'=>array(
'AuthToken'=>'',
'InactiveTimeout'=>20)
]);
我已经尝试使用此代码:
$this->post('/login',
[
'id'=>'1',
'password'=>'secret',
])->seeJson([
"Error" => null,
'Data'=>array(
'InactiveTimeout'=>20)
]);
但我无法通过测试,我的问题是如何为这种情况编写测试? 感谢您的帮助。
【问题讨论】:
我会使用 phpUnit 做的一件事是将使用数组的值与assertArraySubset
进行比较。看到这个link 这样,你可以比较一个数组是否在另一个数组中。
也许您可以尝试将seeJson
用于Error
和seeJsonStructure
用于AuthToken
。
@i906 是的,使用您的建议可以解决问题,谢谢,但是有没有更干净的方法来实现这一点?如果没有,那么我需要为这种响应编写两个测试
【参考方案1】:
你可以试试下面的代码:
$this->post('/login', [
'id' => '1',
'password' => 'secret',
])
->seeJson([
'Error' => null
])
->seeJsonStructure([
'Data' => [
'AuthToken'
]
]);
【讨论】:
以上是关于如何使用 phpunit 测试 JsonArray 中的随机值的主要内容,如果未能解决你的问题,请参考以下文章