Я пытаюсь обмотать голову вокруг тестирования, и я знаю, что это проще, чем я думаю. Я предполагаю, что у меня неизбежно возникнут проблемы, потому что я сначала написал код, и сейчас я просто делаю тесты, вместо того, чтобы тестировать процесс разработки.Методы тестирования, которые ничего не возвращают
Мой вопрос касается функций, которые делают что-то вроде файлов. Они ничего не возвращают, но они делают что-то для скрипта в целом.
Скажем, у меня есть класс, который включает в себя файл:
<?php
class Includer {
public function __construct() {
$this->include_file("/var/www/index.html");
}
public function check_file_validity($file = "") {
// Check to see if the file exists
return true; // if exists
}
public function include_file($file = "") {
if ($this->check_file_validity($file)) {
include $file;
}
}
}
я могу написать тест, чтобы утверждать, что файл существует (check_file_validity
), и это было бы прямо вперед.
Однако было бы приемлемым возвращать логическое значение в функции include_file
на основе того, был ли включен файл? Разве это не было бы лишним тестом, поскольку в основном то же самое происходит при запуске функции check_file_validity
?
Следует отметить, что информация, содержащаяся в файле, поступает с URL-адреса, поэтому никакие файлы здесь не будут жестко закодированы вне тестов (если только я не издечу параметры $_GET
).
Не могли бы вы сказать, что это надуло бы код, что затрудняет отслеживание проблем в конечном итоге из-за добавленных функций? Ваш ответ помогает мне понять, что делать, поэтому спасибо за это. – helllomatt
Всё зависит от меня. Обычно вы хотите группировать эти функции, поэтому вместо добавления метода 'include' вам может потребоваться рассмотреть объект многократного использования. Или, если вы хотите разобрать текстовые файлы, вы должны создать класс 'Reader' и использовать это вместо необработанных функций PHP. Но вам не нужно все проверять. И в вашем случае было бы прекрасно проверить «check_file_validity». Но я хотел показать вам, как еще можно тестировать методы, используя такие функции, если логика усложняется. –