Переменные класса сбрасываются после каждого теста phpunit

1

В моих тестах 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.
  • 0
    @Spudley :)) Через несколько минут он / она сняла мой голос, а потом я удалил свой комментарий. Спасибо.
  • 0
    'firsrt' , релевантно ли это, но 'firsrt' и 'second' - это ключи, указывающие на массив в массиве (пытаясь ro сказать, что есть 2 набора скобок), вы просто передаете dp()['first'] в testOne?
Показать ещё 2 комментария
Теги:
phpunit

1 ответ

2
Лучший ответ

Вам нужно объявить свою собственность как статическую:

private static $numbers = [];

/**
 * @dataProvider dp
 */
public function testOne($data)
{
    foreach($data as $n)
        array_push(self::$numbers, $n);

    var_dump(self::$numbers);
}

public function dp()
{
    return [
        "first" => [[1,2]],
        "second" => [[3,4]],
    ];
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню