У меня есть несколько тестовых классов и функций, которые я пишу на PHP, и у меня возник вопрос о стандартах, когда дело доходит до их кодирования.
У меня есть функция, которая создает внутренний объект хранения, сохраняет его в базе данных, извлекает его и затем утверждает, что значения в БД идентичны тем, которые были введены.
У меня также есть другая функция, которая модифицирует вышеупомянутый бэк-объект, но для этого он должен существовать, конечно. Было бы целесообразно, чтобы вторая функция вызывала первую (которая также возвращает данные, созданные после проверки ее правильности), чтобы я мог автоматизировать тест модификации без жесткого кодирования всего? Если нет, есть ли альтернативы этому подходу, кроме жестких значений?
В PHPUnit вы можете сделать тест зависимым от другого, используя аннотацию @depends. Вы также можете передать значения из первого теста в зависимый.
Второй тест не будет выполнен, если первый не пройден. И вы можете сделать третий тест-депозитант вторым или более чем один тест зависимым от другого (например, чтобы протестировать удаление, вам не нужно обновление для работы, только вставка).
public function testCreateRegister()
{
$db = new Database();
$register_id = $db->createRegister('hello');
// ...
// check that the register was inserted correctly
// ...
return $register_id;
}
/**
* @depends testCreateRegister
*/
public function testUpdateRegister($register_id)
{
$db = new Database();
$this->assertTrue($db->updateRegister('hi');
}
Как объяснено в документах:
Других решений пока нет …