Любой способ сохранить переменные экземпляра между тестами phpunit? - PullRequest
20 голосов
/ 18 июля 2011

Я пишу функциональные тесты для системы SOA, поэтому необходимо протестировать подсистему бэкэнда из внешнего интерфейса.

Это стандартная система CRUD.У меня есть тест, который проверяет, я могу создать объект, и он возвращает мне идентификатор нового объекта.В последующих тестах я хочу отредактировать, а затем удалить этот объект, но phpunit, кажется, каждый раз заново создает экземпляр класса теста, поэтому я теряю переменные своего экземпляра.Выполнение функциональных тестов на каждом сервере в архитектуре не вариант.

Ответы [ 3 ]

35 голосов
/ 18 июля 2011

Одним из способов передачи данных между тестами является использование @depends аннотации

public function testCreate() {
    //...
    return $id;
}

/**
 * @depends testCreate
 */
public function testDelete($id) {
    // use $id
}

, если вы делаете это так, как "тест" удалениябудет пропущен, если создание не работает.

Таким образом, вы получите только одну ошибку, если служба вообще не будет работать вместо многих неудачных тестов.


Если вы не хотитесделать это или это не соответствует вашему случаю по любой причине, статические переменные класса также могут быть опцией, но вы должны быть уверены, что знаете, что они вам абсолютно необходимы:)

4 голосов
/ 30 июля 2013

Поскольку вы хотите запустить каждый тестовый сценарий один раз, вы можете сохранить переменные экземпляра на уровне класса, например, в статических переменных, или во внешнем синглтоне / глобальном хранилище использует get_class($testCase) для ключей ...

0 голосов
/ 18 июля 2011

Полагаю, я просто запущу тест 'create', прежде чем запускать 'edit' или 'delete', и соответственно установлю переменную экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...