所以我在PhpUnit测试中得到了这个:
$alias_manager = $this->prophesize(AliasManagerInterface::class); $alias_manager->cacheClear($source)->shouldBeCalledTimes(1);
我想告诉Prophecy,这就是应该调用别名管理器的全部内容,不应该调用其他方法,也不应该使用任何其他参数调用此方法。后者我可以做到
$alias_manager->cacheClear(Argument::any())->shouldBeCalledTimes(1);
但我怎么能对预言说“没有别的”呢?
如果你打电话给预言 reveal() 在对象预言器上,对象立即被假定为虚拟对象。这意味着它会回来 null 对于对象的所有公共方法,它都是预言。
reveal()
null
然而,只要你添加一个方法预言家(例如 shouldBeCalled...() 呼叫或 willReturn() 调用),则返回的对象将是模拟对象或存根对象。在这种情况下,只有配置的调用才能工作 所有其他呼叫 被执行的将触发失败。
shouldBeCalled...()
willReturn()
换句话说 :你什么都不用做,这是标准行为。