Только это и ничего более с Пророчеством?

Итак, у меня есть это в тесте PhpUnit:

$alias_manager = $this->prophesize(AliasManagerInterface::class);
$alias_manager->cacheClear($source)->shouldBeCalledTimes(1);

И я хотел бы сказать Пророчеству, что это все, что должен вызывать менеджер псевдонимов, никакие другие методы не должны вызываться, ни этот метод с любым другим аргументом. Последнее я могу сделать

$alias_manager->cacheClear(Argument::any())->shouldBeCalledTimes(1);

но как мне сказать "ничего больше" для Пророчества?

1 ответ

Решение

С пророчеством, если вы позвоните reveal() на объекте пророка немедленно предполагается, что объект является фиктивным объектом. Это означает, что он вернется null для всех открытых методов объекта это предсказывает.

Тем не менее, как только вы добавите один метод пророка (например, делая ваши shouldBeCalled...() позвонить или willReturn() вызов), возвращаемый объект будет фиктивным или тупым объектом. В этом случае будут работать только настроенные вызовы, а все остальные вызовы будут вызывать сбой.

Другими словами: вам не нужно ничего делать, это стандартное поведение.

Другие вопросы по тегам