현재 위치: > 최신 기사 목록> PhPunit에서 다른 콜백의 비교를 시뮬레이션하십시오

PhPunit에서 다른 콜백의 비교를 시뮬레이션하십시오

M66 2025-05-17

단위 테스트에서는 때로는 다른 콜백 기능의 동작에 따라 수집 작업을 테스트해야합니다. PHPUNIT는 기능의 동작을 시뮬레이션하고 확인하는 풍부한 도구를 제공합니다. 특히 어레이 또는 컬렉션을 처리 할 때 키 이름이 사용자 정의 콜백과 비교되는 경우가 종종 있습니다. 이 기사는 PHPUnit의 다양한 콜백 기능을 시뮬레이션하여 키 이름 비교 시나리오를 구현하는 방법을 보여줍니다.

1. 문제 배경

키가 무작위이고 불규칙한 데이터를 나타낼 수있는 배열이 있다고 가정합니다. 이 배열을 정렬해야하지만 순서 규칙은 키의 크기를 직접 비교하지 않지만 다른 콜백 함수를 사용하여 비교 로직을 동적으로 지정합니다.

예를 들어, 우리는 키 이름의 알파벳 순서로 정렬하거나 키 이름의 길이를 정렬하거나 특정 비즈니스 규칙에 따라 정렬 순서를 결정할 수도 있습니다.

2. phpunit을 사용한 콜백 함수 테스트

이 기능을 테스트하기 위해 콜백 함수를 시뮬레이션하여 PhPUnit에서 콜백이 예상대로 키 이름을 비교하는지 여부를 확인할 수 있습니다.

다음과 같은 PHP 기능이 있다고 가정합니다.

 function customSort(array $array, callable $callback): array {
    uksort($array, $callback);
    return $array;
}

이 함수는 배열과 콜백 함수를 매개 변수로 사용하며 uksort ()는 콜백 함수에 따라 배열의 키를 정렬합니다. 다음으로, 다른 콜백 기능을 시뮬레이션하는 PHPUnit 테스트를 작성합니다.

3. phpunit 테스트를 작성하십시오

phPunit 테스트에서는 Createmock () 또는 Callback () 메소드를 사용하여 다른 콜백 함수를 시뮬레이션 할 수 있습니다. 다음은 다른 콜백을 시뮬레이션하고 Customsort () 함수를 테스트하는 방법의 예입니다.

 use PHPUnit\Framework\TestCase;

class CustomSortTest extends TestCase {

    public function testSortByLength() {
        $array = [
            'apple' => 'fruit',
            'banana' => 'fruit',
            'kiwi' => 'fruit',
            'grape' => 'fruit',
        ];

        // 키 이름 길이 정렬을 시뮬레이션하는 콜백 함수
        $callback = function($a, $b) {
            return strlen($a) - strlen($b);
        };

        $sortedArray = customSort($array, $callback);

        $this->assertEquals(['kiwi' => 'fruit', 'apple' => 'fruit', 'grape' => 'fruit', 'banana' => 'fruit'], array_keys($sortedArray));
    }

    public function testSortAlphabetically() {
        $array = [
            'apple' => 'fruit',
            'banana' => 'fruit',
            'kiwi' => 'fruit',
            'grape' => 'fruit',
        ];

        // 콜백 함수 시뮬레이션 알파벳순으로 정렬됩니다
        $callback = function($a, $b) {
            return strcmp($a, $b);
        };

        $sortedArray = customSort($array, $callback);

        $this->assertEquals(['apple' => 'fruit', 'banana' => 'fruit', 'grape' => 'fruit', 'kiwi' => 'fruit'], array_keys($sortedArray));
    }

    public function testSortByCustomLogic() {
        $array = [
            'apple' => 'fruit',
            'banana' => 'fruit',
            'kiwi' => 'fruit',
            'grape' => 'fruit',
        ];

        // 역 알파벳 순서로 정렬 된 콜백 함수 시뮬레이션
        $callback = function($a, $b) {
            return strcmp($b, $a);
        };

        $sortedArray = customSort($array, $callback);

        $this->assertEquals(['kiwi' => 'fruit', 'grape' => 'fruit', 'banana' => 'fruit', 'apple' => 'fruit'], array_keys($sortedArray));
    }
}

이 예에서는 세 가지 테스트 사례를 작성합니다. 각각의 테스트 사례는 각각 다른 콜백 함수를 시뮬레이션하여 배열의 정렬을 테스트합니다.

  1. TestSortByLength : 키 이름의 길이별로 정렬하십시오.

  2. 테스트 조종 적 : 알파벳순으로 정렬하십시오.

  3. TestSortByCustomLogic : 사용자 정의 비교 로직 (예 : 리버스 정렬)을 사용하십시오.

4. phpunit 테스트를 실행하십시오

PHPUNIT 명령 줄 도구를 통해 이러한 테스트를 실행할 수 있습니다.

 php vendor/bin/phpunit tests/CustomSortTest.php

모든 것이 잘 진행되면 모든 테스트가 통과되며, 이는 다른 콜백 함수에서 키 이름을 올바르게 비교했음을 나타냅니다.

5. 요약

이 기사에서는 키 이름 비교를 위해 PhPunit의 다른 콜백 기능을 시뮬레이션하는 방법을 보여줍니다. uksort ()Callable Callback 함수를 사용하면 배열이 정렬되는 방법을 제어하고 PhPunit을 사용하여 정렬 로직이 예상대로 작동하는지 확인할 수있는 유연성이 있습니다.

이 접근법을 사용하면보다 복잡한 배열 작업 및 정렬을 구현하려면 실제 요구에 따라 다양한 비교 기능을 쉽게 시뮬레이션 할 수 있습니다.