PHPUnit:期望方法含义

2022-08-30 09:58:29

当我创建一个新的模拟时,我需要调用期望的方法。它到底是做什么的?它的论点呢?

$todoListMock = $this->getMock('\Model\Todo_List');
        $todoListMock->expects($this->any())
            ->method('getItems')
            ->will($this->returnValue(array($itemMock)));

我在任何地方都找不到原因(我尝试过文档)。我已经阅读了来源,但我无法理解它。


答案 1

expects() - 设置期望调用方法的次数:

$mock = $this->getMock('nameOfTheClass', array('firstMethod','secondMethod','thirdMethod'));
$mock->expects($this->once())
     ->method('firstMethod')
     ->will($this->returnValue('value'));
$mock->expects($this->once())
     ->method('secondMethod')
     ->will($this->returnValue('value'));
$mock->expects($this->once())
     ->method('thirdMethod')
     ->will($this->returnValue('value'));

如果你知道,一旦在 expects() 中使用 $this->once() 调用该方法,否则使用 $this->any()

参见:
PHPUnit 模拟与多个期望() 调用

https://phpunit.de/manual/current/en/test-doubles.html#test-doubles.stubs

http://www.slideshare.net/mjlivelyjr/advanced-phpunit-testing


答案 2

查看源代码会告诉您:

/**
 * Registers a new expectation in the mock object and returns the match
 * object which can be infused with further details.
 *
 * @param  PHPUnit_Framework_MockObject_Matcher_Invocation $matcher
 * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
 */
public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher);

PHPUnit 手册列出了可用的匹配器

  • any() 返回一个匹配器,当计算该匹配项的方法执行零次或多次时,该匹配项匹配项匹配项。
  • never() 返回一个匹配器,该匹配器在从不执行其计算方法时匹配。
  • atLeastOnce() 返回一个匹配器,当计算该匹配项的方法至少执行一次时,该匹配项匹配项将匹配。
  • once() 返回一个匹配器,当计算该匹配器的方法执行一次时,匹配该匹配器。
  • exact(int $count) 返回一个匹配器,当计算该匹配项的方法执行恰好$count次时,该匹配项匹配项匹配项。
  • at(int $index) 返回一个匹配器,当在给定$index调用计算该匹配项的方法时,该匹配项将匹配。

推荐