Current Location: Home> Latest Articles> How to assert array_fill_keys results in unit tests

How to assert array_fill_keys results in unit tests

M66 2025-06-06

How to assert whether the return result of the array_fill_keys function is correct in unit test?

In PHP, array_fill_keys is a very practical function that creates an array where the keys come from the specified array, and the value of each key is set to the same value. The common usage of this function is to ensure that the key exists in the array and assign values ​​uniformly when processing key-value pair data. When performing unit tests, we sometimes need to verify that the function returns correctly. So, how do you assert that the return result of array_fill_keys is correct in PHP unit test?

1. Introduction to array_fill_keys function

The basic usage of the array_fill_keys function is as follows:

 array array_fill_keys ( array $keys , mixed $value )
  • $keys : an array where each element will be used as the key to the new array.

  • $value : The value corresponding to each key.

For example:

 $keys = ['a', 'b', 'c'];
$value = 1;
$result = array_fill_keys($keys, $value);
print_r($result);

Output result:

 Array
(
    [a] => 1
    [b] => 1
    [c] => 1
)

2. Use PHPUnit for unit testing

To test the correctness of the array_fill_keys function, we can use PHPUnit for unit testing. First, make sure you have PHPUnit installed and you have created the test class in the correct directory.

Step 1: Create a test class

Suppose we have created an ArrayHelperTest class to test the functionality of array_fill_keys . First, we can write a simple test case to verify that the function returns the correct result as expected.

 use PHPUnit\Framework\TestCase;

class ArrayHelperTest extends TestCase
{
    public function testArrayFillKeys()
    {
        // Test data
        $keys = ['a', 'b', 'c'];
        $value = 1;

        // Call array_fill_keys
        $result = array_fill_keys($keys, $value);

        // Assert whether the returned array is consistent with expected
        $expected = [
            'a' => 1,
            'b' => 1,
            'c' => 1
        ];

        $this->assertEquals($expected, $result);
    }
}

In the above code, we first define a test method testArrayFillKeys , and use the assertEquals method to assert whether the return result of the array_fill_keys function is equal to the expected array $expected .

Step 2: Perform the test

Ensure that after PHPUnit installation is complete, you can run the following command in the terminal to perform unit tests:

 php vendor/bin/phpunit ArrayHelperTest

If the test passes, you will see an output similar to the following:

 OK (1 test, 1 assertion)

3. Other possible assertions

In addition to assertEquals , you can also use other assertion methods to verify the results of array_fill_keys .

  • assertArrayHasKey : Checks whether the array contains a specific key.

 $this->assertArrayHasKey('a', $result);
$this->assertArrayHasKey('b', $result);
$this->assertArrayHasKey('c', $result);
  • assertNotEmpty : Checks whether the returned array is not empty.

 $this->assertNotEmpty($result);
  • assertSame : If you need to compare values ​​in an array exactly the same as expected (including types), you can use assertSame .

 $this->assertSame([1, 1, 1], array_values($result));

4. Test the processing of URLs (if there is a URL)

Suppose you need to test some situations involving URLs and want to replace all URL domains with m66.net , you can do this by regular expressions or simple string replacement.

 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