预言只有这个,而不是更多吗?

时间:2016-01-30 08:24:54

标签: drupal prophecy

所以我在PhpUnit测试中有这个:

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

我想告诉Prophecy,这是应该调用的所有别名管理器,不应该调用其他方法,也不应该使用任何其他参数调用此方法。后者我可以做到

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

但我怎么说"没有别的"预言?

1 个答案:

答案 0 :(得分:2)

使用Prophecy,如果立即在对象先知上调用reveal(),则假定该对象是虚拟对象。这意味着它会为它预测的对象的所有公共方法返回null

但是,只要添加一个方法先知(例如,通过执行shouldBeCalled...()调用或willReturn()调用),返回的对象将是mock或stub对象。在这种情况下,只有已配置的调用才能生效,所有其他调用将被触发失败。

换句话说:您不必做任何事情,这是标准行为。