如何对功能代码进行单元测试? (不是面向对象)

How do I unit test functional code? (not 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);
}