PHPUnit中,我们可以指定该方法通过(PHPUnit中)的任何参数被称为特别检查模拟的方法被调用,而不
->with($this->equalTo('foobar'))
或任何
->with($this->anything())
参数。
但是有没有一种方法来指定该方法已被调用没有参数?
这是我希望未通过测试:
public function testZ()
{
$a = $this->getMock('q');
$a->expects($this->once())
->method('z')
->with(); // <--- what constraint to specify here?
$a->z(1);
}
UPD:
问题具有理论性,所以我没有任何现实生活中的例子。我现在能想到的一些情况下,它可能是有用的是:
public function testMe($object)
{
$object->foo();
}
而且让我们假设testMe
应该(通过设计和要求)总是调用该方法不带参数(假设foo()
有默认的)。因为在这种情况下,任何非默认参数(更确切地说:任何参数!=默认值,我们还不知道哪些参数可能会独立更改)会导致致命后果。
+1我已经花了几分钟在github上查看PHPUnit源代码,似乎' - > with()'只能用于实际指定参数,而不禁止它们。虽然我无法真正想到验证没有通过任何参数的情况,但您需要检查一下吗?我很想知道为什么你需要验证没有发送任何参数。在没有预期的情况下传递参数不会破坏任何内容,并且当有预期的参数无法提供时,您是否可以传入NULL? – rdlowrey 2012-02-28 03:19:19
@rdlowrey:增加了一个解释更新;-) – zerkms 2012-02-28 03:23:42
@rdlowrey:'当你有一个无法提供的参数时,你不能只传入NULL吗?---不,你不能。方法仍然可以有可选参数 – zerkms 2012-02-28 03:25:32