PHPUnit-mockry::mock vs mockry::namedMocks
我正在用mockry编写PHPUnit测试(phpv5.6.32,PHPUnit 3.7.21,mockry dev master),发现了一些关于使用PHPUnit-mockry::mock vs mockry::namedMocks,php,oop,phpunit,mockery,Php,Oop,Phpunit,Mockery,我正在用mockry编写PHPUnit测试(phpv5.6.32,PHPUnit 3.7.21,mockry dev master),发现了一些关于使用mockry::mock和mockry::namedMocks的不理解的地方 我的代码如下,问题如下: 我在LegendTest.php中使用信号收集对象的mockry::namedMock()而不是mockry::mock()是否正确 关于,我希望第一个参数是类名(SignalsCollection),第二个参数应该是extends语句(\Ar
mockry::mock
和mockry::namedMocks
的不理解的地方
我的代码如下,问题如下:
mockry::namedMock()
而不是mockry::mock()
是否正确SignalsCollection
),第二个参数应该是extends语句(\ArrayObject
)-但在我的例子中,我得到了一个错误:mockry\Exception\BadMethodCallException:Received Charts\SignalsCollection::getIterator(),但是没有指定期望值
,所以我只给出一个参数,这很好。为什么?我做错了什么?我很困惑class Signal
{
protected $id = 0;
protected $colName = '';
protected $tableName = '';
public function getId()
{
return $this->id;
}
public function setColName($colName)
{
$this->colName = $colName;
return $this;
}
public function setTableName($tableName)
{
$this->tableName = $tableName;
return $this;
}
}
SignalsCollection.php:
class SignalsCollection extends \ArrayObject
{
}
Legend.php
class Legend
{
protected $signalsCollection = null;
protected $graphModel = null;
public function __construct(SignalsCollection $signalsCollection, GraphModel $graphModel)
{
$this->signalsCollection = $signalsCollection;
$this->graphModel = $graphModel;
}
public function getSignalsCollection()
{
return $this->signalsCollection;
}
public function removeSignal(Signal $signal)
{
foreach ($this->signalsCollection as $key => $item) {
if ($item->getId() === $signal->getId()) {
$this->signalsCollection->offsetUnset($key);
break;
}
}
}
}
LegendTest.php:
class LegendTest extends \PHPUnit_Framework_TestCase
{
protected function tearDown()
{
parent::tearDown();
Mockery::close();
}
public function testRemoveSignal()
{
$testSignal = Mockery::mock('\Charts\Signal')
->shouldReceive('setColName', 'setTableName')
->andReturn(Mockery::self())
->mock();
$testSignal
->setColName('testColumnName')
->setTableName('testTableName');
$testSignalSecond = Mockery::mock('\Charts\Signal')
->shouldReceive('setId', 'setColName', 'setTableName')
->andReturn(Mockery::self())
->mock();
$testSignalSecond
->setId(1)
->setColName('testColumnName')
->setTableName('testTableName');
$signalsCollection = Mockery::namedMock('\Charts\SignalsCollection')
->shouldReceive('append', 'offsetUnset')
->andReturn(Mockery::self())
->mock();
$signalsCollection
->append($testSignal)
->append($testSignalSecond);
$legend = new Legend($signalsCollection, Mockery::mock('\Charts\GraphModel'));
$this->assertEquals($signalsCollection, $legend->getSignalsCollection());
$legend->removeSignal($testSignalSecond);
$signalsCollection->offsetUnset(1);
$this->assertEquals( $signalsCollection, $legend->getSignalsCollection() );
}
}