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
, цей підхід дозволяє вам ізолювати свої юніт-тести від реальних зовнішніх залежностей, зосереджуючись на поведінці вашого власного коду. Цей патерн гарантує, що ваши тести працюють швидко і залишаються надійними незалежно від статусу зовнішніх сервісів або Інтернет-з’єднання.