CodeIgniter, руководство пользователя к версии 1.6.1


Класс 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" говорит функции, что результат ожидается строкового типа. Список доступных для тестирования типов данных:

Создание отчета

Вы можете отображать результат после каждого теста, или вывести отчет о выполнении всех тестов. Результат теста можно выводить и обычной функцией 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);

Важно: Шаблон должен быть объявлен в коде до начала тестирования