我需要使用不同的参数和返回值断言3个不同的方法调用(相同的方法)。我可以使用$this->at()
来做到这一点。我怎样才能断言完全 3调用在何处进行?
通常使用$this->exactly(3)
会很容易,但在我的情况下我不能使用它。
答案 0 :(得分:1)
您想在模拟中使用is.js。然后,您就可以使用exactly(3)
,它将为每次调用返回正确的值。
PHPUnit文档中略有修改的示例:
public function testReturnValueMapStub()
{
// Create a stub for the SomeClass class.
$stub = $this->getMockBuilder('SomeClass')
->getMock();
// Create a map of arguments to return values.
$map = array(
array('a', 'b', 'c', 'd'),
array('e', 'f', 'g', 'h'),
array('i', 'j', 'k', 'l'),
);
// Configure the stub.
$stub->expects($this->exactly(3))
->method('doSomething')
->will($this->returnValueMap($map));
// $stub->doSomething() returns different values depending on
// the provided arguments.
$this->assertEquals('d', $stub->doSomething('a', 'b', 'c'));
$this->assertEquals('h', $stub->doSomething('e', 'f', 'g'));
}