预言只有这个,仅此而已?
Only this and nothing more with Prophecy?
所以我在 PhpUnit 测试中有这个:
$alias_manager = $this->prophesize(AliasManagerInterface::class);
$alias_manager->cacheClear($source)->shouldBeCalledTimes(1);
我想告诉 Prophecy,这就是调用别名管理器时应该使用的所有方法,不应调用其他方法,也不应使用任何其他参数调用此方法。后者我可以
$alias_manager->cacheClear(Argument::any())->shouldBeCalledTimes(1);
但是 "nothing else" 预言怎么说?
使用 Prophecy,如果您立即对对象 prophet 调用 reveal()
,该对象将被假定为虚拟对象。这意味着它将 return null
对于它所预言的对象的所有 public 方法。
但是,一旦您添加了一个方法 prophet(例如,通过执行 shouldBeCalled...()
调用或 willReturn()
调用),returned 对象将是模拟对象或存根对象。在这种情况下,只有配置的调用会起作用,所有其他执行的调用 将触发失败。
换句话说:你什么都不用做,这是标准行为。
所以我在 PhpUnit 测试中有这个:
$alias_manager = $this->prophesize(AliasManagerInterface::class);
$alias_manager->cacheClear($source)->shouldBeCalledTimes(1);
我想告诉 Prophecy,这就是调用别名管理器时应该使用的所有方法,不应调用其他方法,也不应使用任何其他参数调用此方法。后者我可以
$alias_manager->cacheClear(Argument::any())->shouldBeCalledTimes(1);
但是 "nothing else" 预言怎么说?
使用 Prophecy,如果您立即对对象 prophet 调用 reveal()
,该对象将被假定为虚拟对象。这意味着它将 return null
对于它所预言的对象的所有 public 方法。
但是,一旦您添加了一个方法 prophet(例如,通过执行 shouldBeCalled...()
调用或 willReturn()
调用),returned 对象将是模拟对象或存根对象。在这种情况下,只有配置的调用会起作用,所有其他执行的调用 将触发失败。
换句话说:你什么都不用做,这是标准行为。