我正在编写一些phpunit测试来检查我写的自定义json类。
我有一些我想测试的代码......
...
$contents = json_encode( $data );
if( false === $contents )
{
...
}
...
但如果' $ data'是一个它永远不会返回false的数组,即使我传递了一些无效参数,结果也是
行{null:null}
如何在传递数组时测试encode_json(...)返回false?
答案 0 :(得分:2)
查看json_last_error()
:https://secure.php.net/manual/en/function.json-last-error.php
它有一个导致json_encode()
失败的示例,我在此修改了它以使用数组进行演示:
<?php
// An invalid UTF8 sequence
$text = ["text" => "\xB1\x31"];
$json = json_encode($text);
$error = json_last_error();
var_dump($json, $error === JSON_ERROR_UTF8);
?>
运行此操作时,我得到此预期结果,表示json_encode
错误:
$ php php-test.php
bool(false)
bool(true)