如何对功能代码进行单元测试? 不是OOP

问题描述

我在混合环境中工作。有些部分是程序编写的,有些是面向对象的,有些则遵循功能范式。

在重构代码时,我们正在对所有代码实施单元测试,而我目前处于代码功能范围。但是,我见过的有关PHPunit的所有说明都是关于测试对象和类内部的方法的。

我听说过 功能代码上进行单元测试更容易,但从未见过示例。您如何使用PHPunit测试功能代码

例如,如果我有一个功能

function foo($bar,$baz){
 if (!isset($bar["foo"]){
   return false;
 }
 return foobar($bar["foo"],$baz);
}

而且我目前有一个test.PHP像这样:

<?PHP 
declare(strict_types=1);
require("../backend/foo.PHP");
use PHPUnit\Framework\Testcase;
final class functionTest extends TestCase{
   public function testTheFooFunction(): void{
      // ???? 
   }
}

使用PHPunit,对此功能进行单元测试会是什么样?我的test.PHP甚至在正确的轨道上吗?

解决方法

测试方式与其他任何单位相同。这里没什么特别的

function foobar($foo,$baz) {
    return $foo + $baz;
}

function foo($bar,$baz){
    if (!isset($bar["foo"]) {
        return false;
    }
    return foobar($bar["foo"],$baz);
}

public function testTheFooFunction(): void{
    $bar = ['foo' => 1];
    $baz = 2;
    
    $result = foo($bar,$baz);
    
    self::assertEquals(3,$result);
}