Elixir:
Письмо тестів
Як це робити:
Elixir використовує ExUnit як вбудований тестовий фреймворк, який є надзвичайно потужним і легким у використанні. Ось базовий приклад:
- Створіть новий тестовий файл у директорії
testвашого проекту Elixir. Наприклад, якщо ви тестуєте модуль під назвоюMathOperations, ваш тестовий файл може бутиtest/math_operations_test.exs.
# test/math_operations_test.exs
defmodule MathOperationsTest do
use ExUnit.Case
# Це простий тестовий випадок для перевірки функції додавання
test "додавання двох чисел" do
assert MathOperations.add(1, 2) == 3
end
endЩоб запустити свої тести, використовуйте команду mix test у терміналі. Якщо функція MathOperations.add/2 правильно додає два числа, ви побачите вивід, схожий на:
..
Завершено за 0.03 секунди
1 тест, 0 невдачДля тестів, що включають зовнішні сервіси або API, ви можете захотіти використовувати мок-бібліотеки, такі як mox, щоб уникнути звернень до реальних сервісів:
- Додайте
moxдо своїх залежностей уmix.exs:
defp deps do
[
{:mox, "~> 1.0.0", only: :test},
# інші залежності...
]
end- Визначте мок-модуль у вашому допоміжному тесті (
test/test_helper.exs):
Mox.defmock(HTTPClientMock, for: HTTPClientBehaviour)- Використовуйте мок у своєму тестовому випадку:
# test/some_api_client_test.exs
defmodule SomeAPIClientTest do
use ExUnit.Case
import Mox
# Це вказує Mox перевірити, що цей мок був викликаний як очікувалося
setup :verify_on_exit!
test "отримує дані з API" do
# Налаштуйте мок-відповідь
expect(HTTPClientMock, :get, fn _url -> {:ok, "Mocked response"} end)
assert SomeAPIClient.get_data() == "Mocked response"
end
endПід час запуску mix test, цей підхід дозволяє вам ізолювати свої юніт-тести від реальних зовнішніх залежностей, зосереджуючись на поведінці вашого власного коду. Цей патерн гарантує, що ваши тести працюють швидко і залишаються надійними незалежно від статусу зовнішніх сервісів або Інтернет-з’єднання.