phpunit mock не считает вызов функции - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть модульный тест, в котором я создаю фиктивный объект:

 $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) {
...

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 05 ноября 2019

Еще раз я был глуп. извините за этот пост. Это как метод резиновой уточки. Я борюсь в течение часа, и когда я отправляю это на форум, я вижу, что я делаю неправильно ...

Строка $resetTokenManagerStub->expects($this->once())->method('persist'); вызывается после фактического вызова функции ...

...