Я хочу знать, есть ли решение о том, как модульно тестировать черту PHP.
Я знаю, что мы можем протестировать класс, который использует черту. но мне было интересно, есть ли лучшие подходы.
Спасибо за любой совет заранее.
ИЗМЕНИТЬ
Один из вариантов заключается в том, чтобы использовать Trait в самом классе теста, поскольку я собираюсь продемонстрировать ниже.
Но Я не так увлечен этим подходом, так как нет никакой гарантии, что между признаком, классом и PHPUnit_Framework_TestCase (в этом примере) нет похожих имен методов:
Вот пример:
trait IndexableTrait
{
/** @var int */
private $index;
/**
* @param $index
* @return $this
* @throw \InvalidArgumentException
*/
public function setIndex($index)
{
if (false === filter_var($index, FILTER_VALIDATE_INT)) {
throw new \InvalidArgumentException('$index must be integer.');
}
$this->index = $index;
return $this;
}
/**
* @return int|null
*/
public function getIndex()
{
return $this->index;
}
}
и его тест:
class TheAboveTraitTest extends \PHPUnit_Framework_TestCase
{
use TheAboveTrait;
public function test_indexSetterAndGetter()
{
$this->setIndex(123);
$this->assertEquals(123, $this->getIndex());
}
public function test_indexIntValidation()
{
$this->setExpectedException(\Exception::class, '$index must be integer.');
$this->setIndex('bad index');
}
}