Модуль:UnitTests/Документация

Этот модуль упрощает создание юнит-тестов для модулей Lua.

Добавьте следующий код на страницу модуля Модуль:name/testcases:

local tests = require('Module:UnitTests')

function tests:test_example()
	--[[ here be the tests ]]
end

return tests

Затем добавьте следующий код на страницу документации Модуль:name/testcases/Документация:

{{#invoke:name/testcases|run_tests}}

Описание функций и параметров править

Tests should be written as Lua methods whose names start with lua. The lua object contains the following methods, which may be called from the method:

  • preprocess_equals(text, expected, options)
    Сравнивает значение и ожидаемый результат
    • text — значение
    • expected — ожидаемый результат.
  • preprocess_equals_many(prefix, suffix, cases, options)
    Сравнивает несколько результатов вызова теста, добавляя префикс и суффкс
    • prefix — префикс
    • suffix — суффикс
    • cases — массив из двух элементов
    • options — опции
      1. значение
      2. ожидаемый результат.
  • preprocess_equals_preprocess(text1, text2, options)
    Сравнивает два значения
    • text1 — первое значение
    • text2 — второе значение
    • options — опция nowiki для подавления препроцессора для результата
  • preprocess_equals_preprocess_many(prefix1, suffix1, prefix2, suffix2, cases, options)
    Сравнивает несколько результатов вызова теста, добавляя префикс и суффкс
    • prefix1 — префикс для первого значения
    • prefix2 — префикс для второгозначения
    • suffix1 — суффикс первого значения
    • suffix2 — суффикс второго значения
    • cases — массив из двух значений
    • options — опции
  • equals(name, actual, expected, options)
    Формирует строку таблицы сравнения два значения
    • name — название теста (1-я ячейка строки таблицы). Если вместо строки нужно передать таблицу, то следует использовать функцию equals_deep.
  • equals_deep(name, actual, expected, options)
    Сравнивает два значения, каждое из которых таблица
    • name — название теста
    • actual — таблица значений
    • expected — таблица ожидаемых результатов
  • heading(string)
    Формирует подвал таблицы, добавляется последней строкой.
  • iterate
    Принимает таблицу в первом параметре. Итарационно обходит таблицу. Если элемент таблицы тоже таблица, то вызывает функцию в контексте этого массива. Если элемент строка, то для неё вызывается self:heading().
    Существует в двух вариантах:
    • iterate(array, function_name)
      Где, function_name — строка с именем тестовой функции в self. Например, self:iterate({ { "a", "b" }, { "c", "d" } }, "check") вызовет self:check("a", "b") и self:check("c", "d"). Метод self:check() должен быть определён в коде теста отдельно.
    • iterate(array, func)
      Также, но принимает вторым аргументом функцию. Например, self:iterate( { { "a", "b" }, { "c", "d" } }, check) вызовет check(self, "a", "b") and check(self, "c", "d").

Параметр options должен быть передан как таблица или пропущен. На данный момент сущестуют следующие опции

  • nowiki — подавляет вызов препроцессора значений, как будто тег <nowiki> обернут вокруг значений.
  • comment — комментарий добавляемый в последнюю справа ячейку строки таблицы.
  • display — функция формирующая текст фактически отображаемый в таблице. Используется в тестах модулей транскрипции для правильного отображения шрифта МФА.
  • show_difference — если задано true (или любое другое истинное значение, кроме функции), в случае неудачных тестов первый неверный символ будет выделен красным (то есть первый символ в «фактической» строке, который отличается от соответствующего символа в «ожидаемой» строке); если это функция, то символ будет выделен с помощью функции. (В настоящее время доступна только в функции equals. Подсветка выделит диакритические знаки вместе с символами, за которыми они помещены.)

Это страница документации Модуль:UnitTests.