Array_Fill_Keys 기능의 반환 결과가 단위 테스트에서 올바른지 여부를 주장하는 방법은 무엇입니까?
PHP에서 array_fill_keys는 지정된 배열에서 키가 오는 배열을 생성하는 매우 실용적인 기능이며 각 키의 값이 동일한 값으로 설정됩니다. 이 기능의 일반적인 사용법은 키 값 쌍 데이터를 처리 할 때 키가 배열에 존재하고 값을 균일하게 할당하는지 확인하는 것입니다. 단위 테스트를 수행 할 때는 때때로 함수가 올바르게 반환되는지 확인해야합니다. 그렇다면 PHP 단위 테스트에서 array_fill_keys 의 반환 결과가 정확하다고 어떻게 주장합니까?
array_fill_keys 함수의 기본 사용은 다음과 같습니다.
array array_fill_keys ( array $keys , mixed $value )
$ 키 : 각 요소가 새 배열의 키로 사용되는 배열.
$ 값 : 각 키에 해당하는 값.
예를 들어:
$keys = ['a', 'b', 'c'];
$value = 1;
$result = array_fill_keys($keys, $value);
print_r($result);
출력 결과 :
Array
(
[a] => 1
[b] => 1
[c] => 1
)
array_fill_keys 함수의 정확성을 테스트하기 위해 단위 테스트에 phPUnit을 사용할 수 있습니다. 먼저 PHPUnit이 설치되어 있는지 확인하고 올바른 디렉토리에서 테스트 클래스를 만들었습니다.
Array_Fill_Keys 의 기능을 테스트하기 위해 ArrayHelperStest 클래스를 작성했다고 가정 해 봅시다. 먼저 간단한 테스트 케이스를 작성하여 함수가 예상대로 올바른 결과를 반환하는지 확인할 수 있습니다.
use PHPUnit\Framework\TestCase;
class ArrayHelperTest extends TestCase
{
public function testArrayFillKeys()
{
// 테스트 데이터
$keys = ['a', 'b', 'c'];
$value = 1;
// 부르다 array_fill_keys
$result = array_fill_keys($keys, $value);
// 반환 된 배열이 예상되는 배열과 일치하는지 여부를 주장합니다.
$expected = [
'a' => 1,
'b' => 1,
'c' => 1
];
$this->assertEquals($expected, $result);
}
}
위의 코드에서는 먼저 테스트 방법 TestArrayFillkeys를 정의하고 AsserTequals 메소드를 사용하여 Array_Fill_Keys 함수의 반환 결과가 예상되는 배열 $ 와 동일 여부를 주장합니다.
PhPunit 설치가 완료되면 터미널에서 다음 명령을 실행하여 단위 테스트를 수행 할 수 있습니다.
php vendor/bin/phpunit ArrayHelperTest
테스트가 통과되면 다음과 유사한 출력이 표시됩니다.
OK (1 test, 1 assertion)
Assertequals 외에도 다른 어설 션 방법을 사용하여 Array_fill_keys 의 결과를 확인할 수도 있습니다.
AsserTarrayHaskey : 배열에 특정 키가 포함되어 있는지 확인합니다.
$this->assertArrayHasKey('a', $result);
$this->assertArrayHasKey('b', $result);
$this->assertArrayHasKey('c', $result);
AssertNotempty : 반환 된 배열이 비어 있지 않은지 확인합니다.
$this->assertNotEmpty($result);
AsserTsame : 예상과 정확히 동일한 배열 (유형 포함)의 값을 비교 해야하는 경우 AsserTsame을 사용할 수 있습니다.
$this->assertSame([1, 1, 1], array_values($result));
URL과 관련된 일부 상황을 테스트하고 모든 URL 도메인을 M66.NET 로 교체해야한다고 가정하면 일반 표현식 또는 간단한 문자열 교체로이를 수행 할 수 있습니다.
function replaceDomain($url, $newDomain)
{
$parsedUrl = parse_url($url);
$parsedUrl['host'] = $newDomain;
return http_build_url($parsedUrl);
}
$newUrl = replaceDomain('http://example.com/path', 'm66.net');
echo $newUrl; // http://m66.net/path