Я не понимаю поведение моего кода. Вот простой вариант:trait in phpunit TestCase
У меня есть тест:
class EditVoterTest extends TestCase
{
use ContainerAwareTrait;
protected function setUp()
{
$this->getContainer();
}
public function testSomething()
{
// test lauched 4 times with a provider
}
}
и черта:
trait ContainerAwareTrait
{
private $container;
public function getContainer()
{
if (!$this->container) {
echo "NO CONTAINER \n";
$this->container = true;
}
return $this->container;
}
}
и результат
PHPUnit 5.6.2 by Sebastian Bergmann and contributors.
.NO CONTAINER
.NO CONTAINER
.NO CONTAINER
. 4/4 (100%)NO CONTAINER
Time: 241 ms, Memory: 21.00MB
Почему контейнер «построить " каждый раз ?
Я думаю, что для каждого теста, новый экземпляр тестового класса создается. –
Для каждого теста PHPUnit будет запускать 'setUp()' –
Как сказал @FelippeDuarte, 'setUp' - это метод, предназначенный для выполнения всех необходимых действий перед выполнением любого теста (инициализация объекта, подключение к ресурсу и т. Д.). Таким образом, как показывает единичный тест, каждый тест должен считаться уникальным, поэтому 'setUp' должен выполняться для каждого теста. –