单元测试PHP脚本

Don*_*n F 2 php phpunit unit-testing

我有一些作为cronjobs运行的PHP脚本.没有课程,只有少数几个功能.

我喜欢用PHPUnit测试脚本,以确保一切正常,但似乎我需要重写php作为一个类,我不想做(或知道如何).

例如,如果我有一个脚本,它唯一的功能是将1和2加在一起,

 <?php

 $a=1;
 $b=2
 $c=$a+$b;

 ?>
Run Code Online (Sandbox Code Playgroud)

如何用phpunit测试$ c == 3?

谢谢,唐

Sch*_*eis 5

对于您的示例,您不测试$ c = 3.

但那是因为你的例子有点过于简单化了.$c脚本执行后,变量将停止存在.所以它存在的事实并不重要.您想测试代码的功能,而不是它的工作方式.

我会稍微修改你的例子:

job.php

<?php

$a=1;
$b=2
echo $a + $b;

?>
Run Code Online (Sandbox Code Playgroud)

现在我们实际上有一些输出和一些行为.对此的测试如下:

public function testJob() {
   require('job.php');
   $this->expectOutputString('3');
} 
Run Code Online (Sandbox Code Playgroud)

PHPUnit具有对stdOut断言的能力. 我们确保代码输出我们期望的内容.您对这些类型的文件的测试将检查他们所做的是正确的.由于PHP的require语句将在该点执行文件,因此我们可以运行脚本并检查其输出.

如果您的文件具有功能,则只需包含该功能并在各自的测试中检查每个功能.