현재 위치: > 최신 기사 목록> 다중 플랫폼 호환성 코드를 테스트하기 위해 php_uname ()을 조롱하는 방법

다중 플랫폼 호환성 코드를 테스트하기 위해 php_uname ()을 조롱하는 방법

M66 2025-06-02

PHP 응용 프로그램을 개발할 때는 종종 다른 운영 체제 플랫폼에서 코드의 호환성을 고려해야합니다. Code가 다양한 플랫폼에서 원활하게 실행될 수 있는지 테스트하기 위해 PHP_UNAME () 기능은 운영 체제 이름, 버전, 기계 아키텍처 등과 같은 유용한 시스템 정보를 제공 할 수 있습니다. 그러나 때로는 모든 플랫폼, 특히 자동 테스트 환경에서 직접 테스트 할 수있는 것은 아닙니다. 다행스럽게도 기술을 사용하여 PHP_UNAME () 의 리턴 값을 시뮬레이션하여 다른 운영 체제에서 코드의 동작을보다 쉽게 ​​확인할 수 있습니다.

이 기사에서는 Mock PHP_UNAME () 기능을 통해 다른 플랫폼에서 코드의 호환성을 테스트하여 PHP 응용 프로그램이 다양한 시스템과 호환되도록하는 방법을 소개합니다.

1. php_uname () 함수는 무엇입니까?

php_uname () 은 현재 운영 체제에 대한 정보를 얻는 PHP의 내장 기능입니다. 운영 체제 이름, 버전 번호, 기계 아키텍처, 운영 체제 버전 등과 같은 정보가 포함 된 문자열을 반환합니다. 일반적으로 반환 값 형식은 다음과 같습니다.

 string(31) "Linux myhost 4.15.0-20-generic #21-Ubuntu SMP"

2. 조롱 기술을 사용하여 php_uname ()를 시뮬레이션하십시오.

코드가 다른 운영 체제 플랫폼에서 올바르게 작동하도록하기 위해 항상 다른 플랫폼을 사용하여 직접 테스트 할 수있는 것은 아닙니다. 특히 CI (Continuous Integration) 도구를 사용할 때는 모든 플랫폼에서 직접 코드를 실행할 수 없습니다. 그러나 조롱 기술을 사용하여 php_uname () 에서 반환 한 운영 체제 정보를 시뮬레이션하여 다른 플랫폼에서 호환성을 테스트 할 수 있습니다.

조롱은 실제로 외부 환경에 의존하지 않고 테스트 할 때 특정 기능이나 방법의 동작을 시뮬레이션 할 수있는 일반적인 테스트 기술입니다.

3. php_uname () 함수를 조롱하는 방법

PHP 자체에는 php_uname () 과 같은 내부 기능을 직접 조롱하는 내장 방법이 없습니다. 그러나 PHPUNIT 또는 조롱과 같은 일부 타사 라이브러리를 통해이를 달성 할 수 있습니다.

phpunit 사용

프로젝트에서 PhPunit을 테스트 프레임 워크로 사용하는 경우 사용자 정의 테스트를 두 배로 만들어 php_uname () 함수의 동작을 시뮬레이션 할 수 있습니다. PhPunit은 클래스의 메소드 동작을 시뮬레이션하는 데 사용할 수있는 Createmock () 메소드를 제공하지만 내장 기능의 시뮬레이션을 위해서는 일반적으로 Runkit 확장자 또는 기타 기술을 결합해야합니다.

 // 샘플 코드
class MyTest extends PHPUnit\Framework\TestCase
{
    public function testSystemInfo()
    {
        // 시뮬레이션 php_uname() 반환 값
        $this->setMockFunction('php_uname', 'Linux test-host 5.4.0-40-generic #44-Ubuntu SMP');

        // 테스트 해야하는 코드를 호출합니다
        $result = php_uname();
        
        // 断言반환 값符合预期
        $this->assertEquals('Linux test-host 5.4.0-40-generic #44-Ubuntu SMP', $result);
    }

    private function setMockFunction($functionName, $mockedValue)
    {
        runkit_function_redefine($functionName, '', 'return "' . $mockedValue . '";');
    }
}

조롱을 사용합니다

조롱은 모의 기능에 더 간단한 인터페이스를 제공하는 또 다른 인기있는 PHP 조롱 라이브러리입니다. 다음은 Mockery를 사용하여 php_uname () 함수를 시뮬레이션하는 예입니다.

 use Mockery as m;

class MyTest extends PHPUnit\Framework\TestCase
{
    public function tearDown(): void
    {
        m::close();
    }

    public function testSystemInfo()
    {
        // 사용 Mockery 시뮬레이션 php_uname 기능
        $mock = m::mock('alias:php');
        $mock->shouldReceive('php_uname')->andReturn('Windows NT test-host 10.0');

        // 테스트 해야하는 코드를 호출합니다
        $result = php_uname();
        
        // 断言반환 값符合预期
        $this->assertEquals('Windows NT test-host 10.0', $result);
    }
}

4. 다른 플랫폼의 테스트 시나리오 시뮬레이션

조롱 기술을 통해 PHP_UNAME () 에서 반환 한 다양한 운영 체제 정보를 쉽게 시뮬레이션 한 다음 다른 플랫폼에서 코드의 호환성을 확인할 수 있습니다. 예를 들어 Linux, Windows 및 MacOS 환경을 시뮬레이션하여 이러한 플랫폼에서 실행되는 코드 결과를 테스트합니다.

 // 시뮬레이션 Linux 플랫폼
$this->setMockFunction('php_uname', 'Linux myhost 4.15.0-20-generic #21-Ubuntu SMP');

// 시뮬레이션 Windows 플랫폼
$this->setMockFunction('php_uname', 'Windows NT myhost 10.0');

// 시뮬레이션 macOS 플랫폼
$this->setMockFunction('php_uname', 'Darwin myhost 19.5.0 Darwin Kernel Version 19.5.0');

시뮬레이션 후 PhPunit의 어설 션 기능을 사용하여 코드가 다른 운영 체제에서 예상대로 작동하는지 확인할 수 있습니다.

5. 요약

조롱 기술을 사용하여 PHP_UNAME () 함수의 반환 값을 쉽게 시뮬레이션하고 다른 운영 체제 플랫폼에서 코드의 호환성을 테스트 할 수 있습니다. 이 접근법은 여러 운영 체제에서 수동 테스트를 수행 할 시간을 절약 할뿐만 아니라 응용 프로그램의 크로스 플랫폼 기능을 확인하는 신뢰할 수있는 방법을 제공합니다.

다양한 운영 체제 정보를 시뮬레이션함으로써 PHP 응용 프로그램이 다양한 플랫폼에서 원활하게 실행될 수 있으므로 릴리스 후 플랫폼 호환성 문제를 피할 수 있습니다.