Класс Unit Testing
Класс Unit testing (класс тестирования) позволяет программистам тестировать написанный код. Если Вы не сильны в этом, то можете поискать справку по данному вопросу.
Этот класс является простым и состоит всего из нескольких функций. Это есть не полноценная система тестирования и отладки скриптов, а всего лишь простой механизм проверки скриптов на возвращаемые значения и типы данных.
Инициализация класса
Как и многие другие классы в CodeIgniter, класс инициализируется функцией $this->load->library:
$this->load->library('unit_test');
После загрузки объект Unit Test будет доступен по обращению $this->unit
Запуск теста
При запуске теста производится сравнение результатов :
$this->unit->run( test, expected result, 'test name' );
Где test это значение для теста , expected result - ожидаемый тип данных, test name необязательное название теста. Например:
$test = 1 + 1;
$expected_result = 2;
$test_name = 'Один плюс один';
$this->unit->run($test, $expected_result, $test_name);
Ожидаемый результат и значение для теста могут сравниваться по значениям или по типам данных. Например, сравнение по значению :
$this->unit->run('Foo', 'Foo');
А это сравнение с типом данных :
$this->unit->run('Foo', 'is_string');
Второй параметр "is_string" говорит функции, что результат ожидается строкового типа. Список доступных для тестирования типов данных:
- is_string
- is_bool
- is_true
- is_false
- is_int
- is_numeric
- is_float
- is_double
- is_array
- is_null
Создание отчета
Вы можете отображать результат после каждого теста, или вывести отчет о выполнении всех тестов. Результат теста можно выводить и обычной функцией echo:
echo $this->unit->run($test, $expected_result);
Для запуска полного отчета о все тестах используется код
echo $this->unit->report();
Отчет будет сформирован в виде таблицы для наглядности. Если нужны результаты в виде массива, то следует использовать функцию result():
echo $this->unit->result();
Строгий режим
По умолчанию используется простой режим сравнения по значениям. Рассмотрим пример :
$this->unit->run(1, TRUE);
Тест сравнивает значение типа integer с boolean . PHP автоматически приводит их к одному типу данных, а ведь 1 и TRUE являются равными сущностями:
if (1 == TRUE) echo 'Считается как true';
Если необходимо строгое сравнение, без приведения к одному типу, как тут:
if (1 === TRUE) echo 'Считается как FALSE';
То следует включить строгий режим следующим кодом:
$this->unit->use_strict(TRUE);
Включение/Отключение тестирования
Если Вы хотите оставить код тестирования в своих скриптах, но не желаете, что бы проходило тестирование, то можете его отключить:
$this->unit->active(FALSE)
Создание шаблона
Если Вы хотите оформить отчет по-своему, то можете использовать шаблоны для вывода. Примечание: в примере используется псевдокод
$str = '
<table border="0" cellpadding="4" cellspacing="1">
{rows}
<tr>
<td>{item}</td>
<td>{result}</td>
</tr>
{/rows}
</table>';
$this->unit->set_template($str);
Важно: Шаблон должен быть объявлен в коде до начала тестирования