В моих тестах PHPUnit у меня есть тест и поставщик данных, которые предоставляют некоторые целые значения для тестирования. И я делаю с ними несколько логических тестов. После этого я хочу сохранить все эти целочисленные значения в переменной класса.Переменные класса сбрасываются после каждого теста phpunit
private $numbers = [];
/**
* @dataProvider dp
*/
public function testOne($data)
{
foreach($data as $n)
array_push($this->numbers, $n);
var_dump($this->numbers);
}
public function dp()
{
return [
"first" => [[1,2]],
"second" => [[3,4]],
];
}
Выход:
.array(2) {
[0] =>
int(1)
[1] =>
int(2)
}
. 2/2 (100%)array(2) {
[0] =>
int(3)
[1] =>
int(4)
}
Time: 9.71 seconds, Memory: 34.00Mb
Как вы видите, это добавление значения первого набора данных в (1,2) до $numbers
и при 2-й набор данных начал тестировать, что-то сбросить массив и $number
становится (3,4). Однако я ожидал, что это будет (1,2,3,4).
Можете ли вы сказать мне, почему $numbers
массив пуст до second
набор данных?
У меня нет метода tearDown().
php -v
PHP 5.6.14-1+deb.sury.org~precise+1 (cli)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans
phpunit --version
PHPUnit 5.0.4 by Sebastian Bergmann and contributors.
@Spudley :)) Он/Она удалила вниз голос через несколько минут мой комментарий, а потом я удалил свой комментарий. Спасибо. – Eray
Dunno, если это актуально, но '' firsrt'' и '' second'' являются ключами, указывающими на массив внутри массива (например, ro говорит, что есть 2 набора скобок), вы просто передаете 'dp() ['first']' тестировать? – Terminus
@Terminus Мне нужно установить 'массив массива', чтобы получить' $ data' в виде массива. Вот как работают поставщики данных. Если я использую один размерный массив, он отправит '1' в качестве первого аргумента и' 2' в качестве второго аргумента testOne(). – Eray