我正在使用PHPUnit,我必须检查json_decode结果.我有一个包含整数属性的对象,您可以在调试器视图中看到:
当我这样做:
$this->assertObjectHasAttribute('1507',$object);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
PHPUnit_Framework_Assert::assertObjectHasAttribute() must be a valid attribute name
Run Code Online (Sandbox Code Playgroud)
我$object是一个例子stdClass
数字属性异常,PHPUnit不接受它作为有效的属性名称:
private static function isAttributeName(string $string) : bool
{
return preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $string) === 1;
}
Run Code Online (Sandbox Code Playgroud)
因此,最好的做法是不测试对象是否具有属性,而是检查数组是否具有键.
json_decode返回一个对象或一个数组
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )...
ASSOC
- 如果为TRUE,则返回的对象将转换为关联数组.
因此,适当的测试方法是:
function testSomething() {
$jsonString = '...';
$array = json_decode($jsonString, true);
$this->assertArrayHasKey('1507',$array);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6533 次 |
| 最近记录: |