如何重置为PHPUnit的嘲弄预计()?
我有我想测试中多次调用,重置每次运行的预期SoapClient的的模拟。
$soapClientMock = $this->getMock('SoapClient', array('__soapCall'), array($this->config['wsdl']));
$this->Soap->client = $soapClientMock;
// call via query
$this->Soap->client->expects($this->once())
->method('__soapCall')
->with('someString', null, null)
->will($this->returnValue(true));
$result = $this->Soap->query('someString');
$this->assertFalse(!$result, 'Raw query returned false');
$source = ConnectionManager::create('test_soap', $this->config);
$model = ClassRegistry::init('ServiceModelTest');
// No parameters
$source->client = $soapClientMock;
$source->client->expects($this->once())
->method('__soapCall')
->with('someString', null, null)
->will($this->returnValue(true));
$result = $model->someString();
$this->assertFalse(!$result, 'someString returned false');
随着越来越多的调查了一下,好像你只需要调用()再次期待。
然而,与示例中的问题是$这个 - >使用一次()。 对于测试的持续时间,与预计相关联的计数器()不能被复位。 为了解决这个问题,你有两个选择。
第一个选项是忽略的次数它被调用$这个 - >任何()。
第二个选项是针对与这 - $>在($ x)的使用该呼叫。 请记住,这 - $>在($ x)是模拟对象被调用的次数,而不是特定的方法中,在0开始。
随着我的具体的例子,因为模拟测试是一样的两次,并预计只叫了两次,我也可以用$这个 - >确切(),只有一个预期()语句。 即
$soapClientMock = $this->getMock('SoapClient', array('__soapCall'), array($this->config['wsdl']));
$this->Soap->client = $soapClientMock;
// call via query
$this->Soap->client->expects($this->exactly(2))
->method('__soapCall')
->with('someString', null, null)
->will($this->returnValue(true));
$result = $this->Soap->query('someString');
$this->assertFalse(!$result, 'Raw query returned false');
$source = ConnectionManager::create('test_soap', $this->config);
$model = ClassRegistry::init('ServiceModelTest');
// No parameters
$source->client = $soapClientMock;
$result = $model->someString();
$this->assertFalse(!$result, 'someString returned false');
荣誉对于这个答案以$这个- >在()和$这个- >正是辅助()