首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPUnit和die函数

PHPUnit和die函数
EN

Stack Overflow用户
提问于 2011-05-09 17:47:52
回答 3查看 2.5K关注 0票数 8

我使用的是phpunit框架,我的代码如下:

代码语言:javascript
复制
public function A() {

 try {

   (...some code...)

   die (json_encode ($data));

 }

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

}

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

我不能使用断言。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-09 19:22:00

你不能测试那个...

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

在这里,您不应该使用die函数(实际上,您不应该使用die 来返回HTTP响应),而是echo json,然后让脚本正确完成(或者在其他地方return json并echo它)。

为了测试这一点,您可以捕获输出并检查它(这是一个基本的示例,我想还有更好的)。

结论:问题出在你的代码上,解决这个问题,然后你可以尝试测试它。如果你不能,那就不要测试。

票数 17
EN

Stack Overflow用户

发布于 2011-05-09 19:20:32

为什么不能用return替换die()

我的解决方案是让它抛出一个异常,然后用另一个方法捕获这个异常。然后,您可以对function a()进行单元测试,检查它是否抛出了正确类型的异常。另一个函数处理die()

票数 3
EN

Stack Overflow用户

发布于 2011-05-09 19:26:55

实际上,die在这里似乎不是一个好的解决方案。但是如果没有办法改变这一点,你可以在另一个进程中运行这个函数。

为此,您必须编写一个运行函数a.ex的测试文件。

代码语言:javascript
复制
<?php
include 'fileWithAFunction.php';
A();
?>

现在用shell_exec调用这个脚本。

代码语言:javascript
复制
$return = shell_exec('testscript.php');

return变量保存了testscript的输出。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5936094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档