Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.3

Search User Guide

# Класс модульного тестирования (Unit Testing)

Модульное тестирование это подход к разработке программнго обеспечения, при котором тестируется каждая функция вашего приложения. Если вы не знакомы с этой концепцией, вы можете немного прогуглить ее.

Класс модульного тестирования CodeIgniter-а достаточно прост, он состоит из функции оценки и двух функций результата. Он не представляет собой полномасштабный тестовый набор, но является простым механизмом для определения правильности результатов.

## Инициализация класса

Как и большинство других классов в CodeIgniter, класс модульного тестирования инициализируется в вашем контроллере посредством функции $this->load->library:

`$this->load->library('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

## Генерация отчетов

Вы также можете отображать отчеты после каждого теста, или вы можете запустить несколько тестов и сгенерировать отчет в конце. Чтобы показать отчет, просто выведите в браузер ответ функции run():

`echo $this->unit->run($test, $expected_result);`

Чтобы запустить полный отчет по всем тестам, сделайте так:

`echo $this->unit->report();`

Отчет будет форматирован в HTML-таблицу. Если вы предпочитаете использовать строчные данные, вы можете получить массив, используя:

`echo $this->unit->result();`

## Строгий режим

По умолчанию класс модульного тестирования исследует литеральные соответствия неточно. Рассмотрим этот пример:

`$this->unit->run(1, TRUE);`

Тест сравнивает с целым, но ожидаемый результат булев. PHP, однако при неточном сравнении типов вычислит этот код как TRUE, используя обычное сравнение:

`if (1 == TRUE) echo 'Оценивается как true';`

Если вы предпочитаете, вы можете включить класс модульного тестирования в строгий режим, который будет сравнивать как содержимое, так и тип данных:

`if (1 === TRUE) echo 'Оценивается как 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);`

Примечание: Ваш шаблон должен быть декларирован до запуска процесса тестирования.

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter