如何使用phpunit测试JsonArray中的随机值
大家好,我正在测试API并从响应中获取特定的json元素,下面是API的响应:如何使用phpunit测试JsonArray中的随机值,php,json,laravel,laravel-5,phpunit,Php,Json,Laravel,Laravel 5,Phpunit,大家好,我正在测试API并从响应中获取特定的json元素,下面是API的响应: { "Error": null, "Data": { "AuthToken": "jaskdfjlsadkfjasd", "InactiveTimeout": 20 } } 由于AuthToken的值始终是随机的,因此我无法使用以下代码对其进行测试: $this->post('/login', [ 'id'=>'1', 'password'=&
{
"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)
]);
我尝试过使用以下代码:
$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)
]);
但是我不能通过测试,我的问题是如何为这个案例编写测试?
谢谢您的帮助。您可以尝试以下代码:
$this->post('/login', [
'id' => '1',
'password' => 'secret',
])
->seeJson([
'Error' => null
])
->seeJsonStructure([
'Data' => [
'AuthToken'
]
]);
您可以尝试以下代码:
$this->post('/login', [
'id' => '1',
'password' => 'secret',
])
->seeJson([
'Error' => null
])
->seeJsonStructure([
'Data' => [
'AuthToken'
]
]);
使用PHPUnit可以做的一件事是将使用数组的值与
assertArraySubset
进行比较。通过这种方式,您可以比较一个数组是否在另一个数组中。也许您可以尝试使用seeJson
查看Error
和seeJsonStructure
查看AuthToken
@i906。是的,使用您的建议就可以了,谢谢,但是有没有更干净的方法来实现这一点?如果没有,那么我需要为这种响应编写两个测试。使用PHPUnit可以做的一件事是使用数组与assertArraySubset
比较值。通过这种方式,您可以比较一个数组是否在另一个数组中。也许您可以尝试使用seeJson
查看Error
和seeJsonStructure
查看AuthToken
@i906。是的,使用您的建议就可以了,谢谢,但是有没有更干净的方法来实现这一点?如果不是,那么我需要为这种响应编写两个测试