Lua:
Письмо тестів

Як це зробити:

Lua, будучи легкою, але потужною мовою сценаріїв, не включає вбудований фреймворк для тестування. Однак, бібліотеки сторонніх розробників, такі як Busted і LuaUnit, роблять тестування відносно простим. Тут ми розглянемо приклади використання обох.

Використання Busted

Busted - популярний фреймворк для тестування Lua, який пропонує гнучкий спосіб писати тести. Спершу встановіть Busted через LuaRocks (менеджер пакетів Lua) за допомогою команди luarocks install busted. Після встановлення ви можете писати свої тести. Ось простий тест для функції add, яка сумує два числа:

-- add.lua
local function add(a, b)
  return a + b
end

return add
-- add_spec.lua
local add = require('add')

describe("Функція додавання", function()
  it("повинна коректно додавати два числа", function()
    assert.are.equal(5, add(2, 3))
  end)
end)

Щоб запустити тести, виконайте busted у вашому терміналі. Приклад виводу для успішного тесту виглядатиме так:

●
1 успіх / 0 невдач / 0 помилок / 0 в очікуванні : 0.002 секунди

Використання LuaUnit

LuaUnit - ще один фреймворк для тестування, який дотримується конвенцій xUnit і легко налаштовується. Встановіть LuaUnit через LuaRocks за допомогою luarocks install luaunit. Ось як ви могли б написати подібний тест, як вище, з використанням LuaUnit:

-- add.lua залишається таким самим

-- test_add.lua
luaunit = require('luaunit')
local add = require('add')

function testAdd()
  luaunit.assertEquals(add(2, 3), 5)
end

os.exit(luaunit.LuaUnit.run())

Запуск цього скрипта безпосередньо через Lua (lua test_add.lua) виведе щось на кшталт:

.
Пройдено 1 тест за 0.001 секунди, 1 успіх, 0 невдач

Обидва фреймворки, Busted та LuaUnit, пропонують обширні можливості для роботи з різними сценаріями тестування, включно з мокінгом, шпигунством та асинхронним тестуванням. Вибір між ними залежить від специфічних потреб вашого проекту та особистих переваг щодо синтаксису та функціональності.