我已经开始对我当前的项目实施单元测试。
虽然目前所有单元测试都通过了,但为了方便,我对方法进行了更改以jsonResponse
发送 json 标头。这有助于我将 json 响应视为 Chrome 控制台中的树。
现在单元测试失败是由于
无法修改标头信息 - 标头已发送
(输出开始于 [fullPath]/phpunit/src/Util/Printer.php:134)
深入挖掘,我发现这可以通过添加@runInSeparateProcess
docBlocks 来解决。
但这只会导致:
PHP 致命错误:在第 365 行PHP 堆栈跟踪中找不到类“PHPUnit_Util_Configuration” :
PHP 1. {main}() -:0
这是我的 json 方法之一(在通过 AJAX 请求调用的几种方法的末尾调用):
/**
* Helper function to print a json encoded success message back to the frontend.
*
* @param array $returnData
*
* @return bool
*
* @runInSeparateProcess
*/
public function returnJsonSuccess($returnData = [])
{
header('Content-Type: application/json');
echo json_encode(
[
"success" => true,
"data" => $returnData,
]
);
return true;
}
那么,切入正题,我怎样才能使它正常工作?
我的选择之一是检测是否从单元测试中调用该方法,并仅在正常调用时有条件地发送标头。我在想最简单的方法是在引导文件中定义一个环境变量或一个常量,然后在我的BaseController
.
有没有一种更简洁的方法可以让我的单元测试再次工作,同时保持 json 标头的发送?