Класс тестирования модулей
Тестирование модулей — это подход к разработке программного обеспечения, в котором пишутся тесты для каждой функции вашего приложения. Если вы не знакомы с этим понятием, вы можете немного погуглить на эту тему.
Класс Unit Test CodeIgniter довольно прост, состоящий из функции оценки и двух функций результатов. Он не предназначен для полной тестовой среды, а скорее для простого механизма оценки вашего кода, чтобы определить, генерирует ли он правильный тип данных и результат.
Использование библиотеки тестирования модулей
Инициализация класса
Как и большинство других классов в CodeIgniter, класс Unit Test инициализируется в вашем контроллере с помощью функции $this->load->library:
$this->load->library('unit_test');
После загрузки объект Unit Test будет доступен с помощью $this->unit
Запуск тестов
Запуск теста включает в себя предоставление теста и ожидаемого результата следующим образом:
$this->unit->run(‘test’, ‘expected result’, ‘test name’, ‘notes’);Где test — результат кода, который вы хотите протестировать, expected result — ожидаемый тип данных, test name — необязательное имя, которое вы можете дать своему тесту, а notes — необязательные заметки. Пример:
$test = 1 + 1; $expected_result = 2; $test_name = 'Adds one plus one'; $this->unit->run($test, $expected_result, $test_name);
Ожидаемый результат, который вы предоставляете, может быть либо точным совпадением, либо совпадением по типу данных. Вот пример точного совпадения:
$this->unit->run('Foo', 'Foo');
Вот пример совпадения по типу данных:
$this->unit->run('Foo', 'is_string');
Обратите внимание на использование «is_string» во втором параметре? Это сообщает функции оценить, является ли результат вашего теста строкой. Вот список разрешенных типов сравнения:
- is_object
- is_string
- is_bool
- is_true
- is_false
- is_int
- is_numeric
- is_float
- is_double
- is_array
- is_null
- is_resource
Генерация отчетов
Вы можете отобразить результаты после каждого теста или можете запустить несколько тестов и сгенерировать отчет в конце. Чтобы отобразить отчет непосредственно, просто выведите или верните функцию run:
echo $this->unit->run($test, $expected_result);
Чтобы запустить полный отчет обо всех тестах, используйте это:
echo $this->unit->report();
Отчет будет отформатирован в HTML-таблицу для просмотра. Если вы предпочитаете необработанные данные, вы можете извлечь массив, используя:
echo $this->unit->result();
Жесткий режим
По умолчанию класс unit test выполняет оценку точных совпадений свободно. Рассмотрим этот пример:
$this->unit->run(1, TRUE);
Тест оценивает целое число, но ожидаемый результат — булево значение. Однако PHP из-за своей свободной типизации оценит вышеуказанный код как TRUE при использовании обычного оператора равенства:
if (1 == TRUE) echo 'This evaluates as true';
Если вы предпочитаете, вы можете включить класс unit test в жесткий режим, который будет сравнивать тип данных, а также значение:
if (1 === TRUE) echo 'This evaluates as FALSE';
Для включения жесткого режима используйте это:
$this->unit->use_strict(TRUE);
Включение/отключение тестирования модулей
Если вы хотите оставить некоторые тесты в своих скриптах, но не запускать их, если вам это не нужно, вы можете отключить тестирование модулей, используя:
$this->unit->active(FALSE);
Отображение результатов тестирования модулей
Когда отображаются результаты вашего модульного теста, по умолчанию отображаются следующие элементы:
- Имя теста (test_name)
- Тип данных теста (test_datatype)
- Ожидаемый тип данных (res_datatype)
- Результат (result)
- Имя файла (file)
- Номер строки (line)
- Любые заметки, которые вы ввели для теста (notes)
Вы можете настроить, какие из этих элементов отображаются, используя $this->unit->set_test_items(). Например, если вы хотели отобразить только имя теста и результат:
Настройка отображаемых тестов
$this->unit->set_test_items(array('test_name', 'result'));
Создание шаблона
Если вы хотите отформатировать результаты тестирования модулей иначе, чем по умолчанию, вы можете задать свой собственный шаблон. Вот пример простого шаблона. Обратите внимание на необходимые псевдопеременные:
$str = '
<table border="0" cellpadding="4" cellspacing="1">
{rows}
<tr>
<td>{item}</td>
<td>{result}</td>
</tr>
{/rows}
</table>';
$this->unit->set_template($str);
Примечание
Ваш шаблон должен быть объявлен до запуска процесса модульного тестирования.
Справочник по классу
-
class CI_Unit_test -
-
set_test_items($items) -
Параметры: - $items (массив) – Список отображаемых элементов теста
Возвращает: void
Устанавливает список элементов, которые должны быть видны в тестах. Допустимые варианты:
- test_name
- test_datatype
- res_datatype
- result
- file
- line
- notes
-
run($test[, $expected = TRUE[, $test_name = 'undefined'[, $notes = '']]]) -
Параметры: - $test (смешанный) – Тестовые данные
- $expected (смешанный) – Ожидаемый результат
- $test_name (строка) – Имя теста
- $notes (строка) – Любые заметки, которые нужно добавить к тесту
Возвращает: Отчет о тестировании
Тип возвращаемого значения: строка
Запускает тесты модулей.
-
report([$result = array()]) -
Параметры: - $result (массив) – Массив, содержащий результаты тестов
Возвращает: Отчет о тестировании
Тип возвращаемого значения: строка
Генерирует отчет об уже завершенных тестах.
-
use_strict([$state = TRUE]) -
Параметры: - $state (bool) – Флаг состояния строгости
Тип возвращаемого значения: void
Включает/отключает строгое сравнение типов в тестах.
-
active([$state = TRUE]) -
Параметры: - $state (bool) – Включить ли тестирование
Тип возвращаемого значения: void
Включает/отключает тестирование модулей.
-
result([$results = array()]) -
Параметры: - $results (массив) – Список результатов тестов
Возвращает: Массив ссылок на необработанные данные о результатах
Тип возвращаемого значения: массив
Возвращает необработанные данные о результатах тестов.
-
set_template($template) -
Параметры: - $template (строка) – Шаблон результатов тестирования
Тип возвращаемого значения: void
Устанавливает шаблон для отображения результатов тестов.
-
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/unit_testing.html