У меня есть модульный тест, в котором я создаю фиктивный объект:
$resetTokenManagerStub = $this->getMockBuilder(ObjectManager::class)->getMock();
Я делаю это возвращаемое значение другого фиктивного объекта
$managerRegistryStub->method('getManagerForClass')->willReturn($resetTokenManagerStub);
Я проверяю, был ли он вызван точноодин раз:
$resetTokenManagerStub->expects($this->once())->method('persist');
, если я помещаю var_dump непосредственно перед вызовом в реальном блоке, я вижу, что я передаю код там и что заглушка является resetTokenManagerStub
, но все же результат теста:
There was 1 failure:
1) App\Tests\Service\UserServiceTest::testGeneratePasswordResetToken with data set #0 (Mock_User_a375caf8 Object (...), 'generatedToken')
Expectation failed for method name is equal to 'persist' when invoked 1 time(s).
Method was expected to be called 1 times, actually called 0 times.
Почему он не считает звонок? Это потому, что я использовал его как возвращаемое значение другого макета? Объект, который я получаю, когда звоню getManagerForClass()
, совпадает с объектом в unittest. Я сделал ar_dump
на нем, и оба выглядят одинаково:
object(Mock_ObjectManager_142d72a2)#26 (4) {
...
object(Mock_ObjectManager_142d72a2)#26 (4) {
...
Что я здесь не так делаю?