【发布时间】:2013-07-29 19:51:21
【问题描述】:
我有这门课:
class PagSeguro {
public function pay()
{
if ( ! $this->checkAllData() )
{
return false;
}
return $this->buildPaymentURL();
}
private function checkAllData()
{
return true;
}
private function buildPaymentURL()
{
echo "not cool!\n\n";
return true;
}
}
还有这个测试:
public function testPagSeguroPaymentData()
{
$m = m::mock('PagSeguro[buildPaymentURL]');
$m->shouldReceive('buildPaymentURL')
->once()
->andReturn('http://');
$this->assertEquals($m->pay(), 'http://');
}
如果我 var_dump($m) 我看到了模拟方法:
'buildPaymentURL' =>
class Mockery\ExpectationDirector#1507 (5) {
protected $_name =>
string(15) "buildPaymentURL"
protected $_mock =>
...
protected $_expectations =>
array(1) {
...
}
protected $_expectedOrder =>
NULL
protected $_defaults =>
array(0) {
...
}
}
}
但是当测试执行时,它调用的不是模拟的,而是真实的。除非我重命名它
private function buildPaymentURL_RENAMED() {}
然后我得到一个绿色。
谁能告诉我使用 Mockery 进行部分模拟的正确方法?
【问题讨论】:
标签: php laravel laravel-4 mockery