php - 对 PHP 脚本进行单元测试

标签 php unit-testing phpunit

我有一些作为 cronjobs 运行的 php 脚本。没有类,只有几个函数。

我想用 PHPUnit 测试脚本以确保一切正常,但看来我需要将 php 重写为一个类,我不想这样做(或不知道如何做)。

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

 <?php

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

 ?>

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

谢谢, 唐

最佳答案

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

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

我会稍微修改一下你的例子:

工作.php

<?php

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

?>

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

public function testJob() {
   require('job.php');
   $this->expectOutputString('3');
} 

PHPUnit has the ability to assert against stdOut.我们确保代码输出我们期望的结果。您对这些类型的文件的测试将检查它们所做的事情是否正确。由于 PHP 的 require 语句将在此时执行该文件,因此我们可以运行该脚本并检查其输出。

如果您的文件具有函数,您只需包含该函数并在各自的测试中检查每个函数。

关于php - 对 PHP 脚本进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29949741/

相关文章:

php - 如何使用 stackoverflow 等 Google gmail 帐户对用户进行身份验证

php - 上传图片目录

java - 无法验证来自 RxJava 订阅者的模拟方法调用

python - 如何使用本地模块防止pytest

php - Symfony Simple PHPUnit 退出代码 1,未显示错误

phpunit - PhpStorm PHPUnit 测试报告程序错误

php - 如何将查询的第一个结果与其余结果分开?

php - 模板引擎与 Zend Framework 的优缺点

Django 在测试中加载固定装置(不是来自已安装的应用程序)

php - 在不相关的类中进行静态方法调用的替代方法是什么?