php - 機能コードを単体テストするにはどうすればよいですか? (OOPではありません)

okwaves2024-01-25  7

私はハイブリッド環境で作業しています。一部のセクションは手続き型で書かれており、一部はオブジェクト指向で、一部は関数パラダイムに従っています。

コードをリファクタリングする際、すべてのコードに単体テストを実装しています。現在、コードの機能領域にいます。ただし、私がこれまで見た 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.p で正しい軌道に乗っているでしょうか?hp?



------------------------

他のユニットと同じ方法でテストしてください。ここには特別なことは何もありません

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);
}

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。