Класс Модульного Тестирования 

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

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

    Использование класса модульного тестирования 

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

    Как и большинство классов CodeIgniter, данный класс инициализируется в вашем контроллере с помощью $this->load->library function:

    $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
    • is_resource

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

    Вы можете либо отображать результаты после каждого теста либо же вы можете запустить несколько тестов и создать отчет в конце. Чтобы показать отчет, достаточно воспользоваться echo или return запущеной функции:

    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 = '
    {rows}                                                {/rows}
    {item} {result}
    '
    ; $this->unit->set_template($str);

    Примечание

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

    Справка класса 

    class CI_Unit_test 
    set_test_items($items) 
    Параметры:
    • $items (массив) – Список видимых элементов теста
    Возвращает:

    пустота

    Задает список элементов, которые должны быть видны в тестах. Допустимые значения::

    • 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 (булево) – Метка строгого режима
    Возвращаемый тип:

    пустота

    Включает/отключает строгое сравнение в тестах.

    active([$state = TRUE]) 
    Параметры:
    • $state (булево) – Следует ли включать тестирование
    Возвращаемый тип:

    пустота

    Включает/выключает тестирования.

    result([$results = array()]) 
    Параметры:
    • $results (массив) – Список результатов тестов
    Возвращает:

    Массив исходных данных результата теста

    Возвращаемый тип:

    массив

    Возвращает необработанные результаты данных теста.

    set_template($template) 
    Параметры:
    • $template (строка) – Шаблон вывода результата теста
    Возвращаемый тип:

    пустота

    Задает шаблон для отображения результатов тестов.