Любой способ сохранить переменные экземпляра между тестами phpunit?
Я пишу функциональные тесты для SOA-системы, поэтому вам нужно протестировать бэкэнд-подсистему из внешнего интерфейса.
Это стандартная система CRUD. У меня есть тест, который позволяет тестировать объект, и возвращает мне идентификатор нового объекта. В последующих тестах я хочу отредактировать, а затем удалить этот объект, но phpunit, кажется, повторно создает экземпляр класса test каждый раз, поэтому я теряю свои переменные экземпляра.
Как я могу это достичь? Выполнение функциональных тестов на каждом сервере в архитектуре не является вариантом.
Ответы
Ответ 1
Один из способов передать материал между тестами - использовать @depends
аннотация
public function testCreate() {
//...
return $id;
}
/**
* @depends testCreate
*/
public function testDelete($id) {
// use $id
}
если вы сделаете это так, тест "удалить" будет пропущен, если создание не будет работать.
Таким образом, вы получите только one ошибку, если служба не работает вообще, а не многие неудачные тесты.
Если вы не хотите этого делать или что не соответствует вашему делу по какой-либо причине, переменные статического класса также могут быть опцией, но вы должны быть уверены, что знаете, что вы абсолютно в них нуждаетесь:)
Ответ 2
Поскольку вы хотите запускать каждый тестовый файл один раз, вы можете сохранить переменные экземпляра на уровне класса, например, в статических переменных или во внешнем хранилище singleton/global использует get_class($testCase)
для ключей...
Ответ 3
Я предполагаю, что я просто запустил тест "create", прежде чем запускать "edit" или "delete" и соответствующим образом установить переменную экземпляра.