Не работает метод returnValueMap в PHPUnit: возвращает NULL

Бывает так, что метод заменённый через returnValueMap возвращает NULL. Иногда такое происходит, потому что в методе returnValueMap заданы не все аргументы, которые есть в сигнатуре заменяемого метода. Обычно можно упустить необезательные аргументы.
 
Приведём пример:
 
<?php

namespace Tests\ExampleProject;

use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{
    public function testSomething()
    {
        $mockObject = $this->createMock(DummyObject::class);
        $mockObject
            ->method('someMethod')
            ->will($this->returnValueMap([
                ['a', 'b', 't'],
            ]));

        $this->assertEquals('t', $mockObject->someMethod('a', 'b'));
    }
}

class DummyObject
{
    public function someMethod($x, $y, $z = null) {}
}
Как видим не задан аргумент $z, который является необязательным.
 
Результат запуска теста:
 
PHPUnit 7.0.3 by Sebastian Bergmann and contributors.

F                                                                   1 / 1 (100%)

Time: 19 ms, Memory: 4.00MB

There was 1 failure:

1) Tests\ExampleProject\ExampleTest::testSomething
Failed asserting that null matches expected 't'.

/home/ohorzin/projects/workbench/exa.php:18

FAILURES!
Tests: 1, Assertions: 1, Failures: 1
Как видим, метод testSomething возвращает NULL, как будто не настраивали его замену.
Поправим тест:
 
<?php

namespace Tests\ExampleProject;

use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{
    public function testSomething()
    {
        $mockObject = $this->createMock(DummyObject::class);
        $mockObject
            ->method('someMethod')
            ->will($this->returnValueMap([
                ['a', 'b', 'c', 't'],
            ]));

        $this->assertEquals('t', $mockObject->someMethod('a', 'b', 'c'));
    }
}

class DummyObject
{
    public function someMethod($x, $y, $z = null) {}
}
Результат запуска теста:
 
PHPUnit 7.0.3 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 24 ms, Memory: 4.00MB

OK (1 test, 1 assertion)
Всё работает! В других случаях ошибка может быть в том, что заданные значения в returnValueMap не соответсвуют тем, которые передаются в реальности.