PHPUnit和die函数

doc*_*ore 8 php phpunit

我正在使用phpunit框架,我有这样的代码:

public function A() {

 try {

   (...some code...)

   die (json_encode ($data));

 }

 catch (Exception $e) {
   die(false);
 }

}
Run Code Online (Sandbox Code Playgroud)

这个函数是通过AJAX调用的,我不能用return替换die.问题是:如何使用这样的代码进行单元测试?

断言,我不能用它.

谢谢.

Mat*_*oli 17

你无法测试......

有时单元测试会带来这样的问题(不可测试的情况).这通常意味着问题不在于测试,而在于您的代码及其架构.

在这里你不应该使用该die函数(实际上你不应该使用它die来返回HTTP响应),但是echojson然后让脚本正确完成(或者returnjson和echo它在其他地方).

为了测试这个,你可以捕获输出并检查它(这是一个基本的例子,我猜想有更好的).

结论:问题在于您的代码,修复此问题然后您可以尝试对其进行测试.如果你不能,那么没有测试.

  • +1你把它比我好."如果它很难测试,那就很糟糕了." (4认同)