【发布时间】:2013-10-01 13:47:01
【问题描述】:
我是 TDD 和 phpunit 的新手。
我正在测试基于其执行方法分叉的代码:
if (PHP_SAPI!='cli') {
header('HTTP/1.1 '.$statusCode);
}
我想获得尽可能多的代码覆盖率,但我似乎无法测试这部分(因为 phpunit 正在通过命令行界面进行测试)。
有没有办法解决这个问题?或者其他方式来测试这部分?
我想过尝试 curl 什么的,但是测试运行的位置将与测试它的用户的系统相关。
【问题讨论】:
-
您实际上发现了一种代码气味。相反,您应该将其作为该代码的注入参数或两个实现,一个用于 CLI,一个用于 HTTP,以便您可以测试这两个单元。如果这不是您的代码,则无需对其进行单元测试。
-
顺便说一句,如果您要进行 TDD(在编写代码之前编写测试),您一开始就不会遇到这个问题。作为补充说明,并且为了使 TDD 术语更加清晰,我不是在评判,我也花了相当长的时间才意识到首先编写测试的好处。
标签: php unit-testing tdd phpunit