Я только начал использовать PHPSpec, и я действительно наслаждаюсь им через PHPUnit, особенно без усилий и глупостей. Во всяком случае, метод, который я пытаюсь проверить, ожидает массив объектов Cell
. Как я могу сказать PHPSpec, чтобы дать мне массив издевок?Как создать массив mocks в PHPSpec?
Упрощенная версия моего класса
<?php
namespace Mything;
class Row
{
/** @var Cell[] */
protected $cells;
/**
* @param Cell[] $cells
*/
public function __construct(array $cells)
{
$this->setCells($cells);
}
/**
* @param Cell[] $cells
* @return Row
*/
public function setCells(array $cells)
{
// validate that $cells only contains instances of Cell
$this->cells = $cells;
return $this;
}
}
Упрощенная версия моего теста
<?php
namespace spec\MyThing\Row;
use MyThing\Cell;
use PhpSpec\ObjectBehavior;
class RowSpec extends ObjectBehavior
{
function let()
{
// need to get an array of Cell objects
$this->beConstructedWith($cells);
}
function it_is_initializable()
{
$this->shouldHaveType('MyThing\Row');
}
// ...
}
Я надеялся, что я мог бы сделать следующее, но потом жалуется, что не может найти Cell[]
. Используя FQN, он жалуется, что не смог найти \MyThing\Cell[]
.
/**
* @param Cell[] $cells
*/
function let($cells)
{
// need to get an array of Cell objects
$this->beConstructedWith($cells);
}
Единственные варианты я могу работать из, чтобы передать несколько типов-намекнули Cell
аргументы и вручную объединить их в массив. Я что-то пропустил?
Edit: Я использую PHPSpec 2.5.3, как, к сожалению, сервер в настоящее время застрял на PHP 5.3 :-(