Как проверить порядок параметров, передаваемых объекту, построенному методом

Я тестирую простой фабричный класс с единственным методом, который возвращает TagModel,

class TagFactory
{
public function buildFromArray(array $tagData)
{
return new TagModel(
$tagData['t_id'],
$tagData['t_promotion_id'],
$tagData['t_type_id'],
$tagData['t_value']
);
}
}

Я могу проверить метод …

public function testbuildFromArray()
{
$tagData = [
't_id' => 1,
't_promotion_id' => 2,
't_type_id' => 3,
't_value' => 'You are valued',
];

$tagFactory = new TagFactory();
$result = $tagFactory->buildFromArray($tagData);
$this->assertInstanceOf(TagModel::class, $result);
}

Если я изменю порядок параметров в new TagModel… тест все равно пройдет.

Если я пророчествую TagModel

$tagModel = $this->prophesize(TagModel::class);
$tagModel->willBeConstructedWith(
[
$tagData['t_id'],
$tagData['t_promotion_id'],
$tagData['t_type_id'],
$tagData['t_value']
]
);

… но что я тогда должен утверждать? assertSame не работает, потому что это не так.

Я мог бы проверить заказ с получателями из TagModel но потом я вышел за рамки тестирования только этого устройства. Тем не менее, я чувствую, что заказ должен быть проверен, потому что, если я изменю их, тест все равно пройдет.

1

Решение

Метод, который вы тестируете, является заводским. Это создает объект. Если вам недостаточно убедиться, что он соответствует ожидаемому типу, необходимо проверить его состояние. Либо проверьте его с помощью получателей, либо создайте объект, который вы ожидаете получить, и используйте assertEquals () для его сравнения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]