Elixir:
Skrive tester
Hvordan:
Elixir bruker ExUnit som sitt innebygde testrammeverk, som er ekstremt kraftfullt og enkelt å bruke. Her er et grunnleggende eksempel:
- Lag en ny testfil i
test
-katalogen til Elixir-prosjektet ditt. For eksempel, hvis du tester en modul kaltMathOperations
, kan testfilen din væretest/math_operations_test.exs
.
# test/math_operations_test.exs
defmodule MathOperationsTest do
use ExUnit.Case
# Dette er et enkelt testtilfelle for å sjekke addisjonsfunksjonen
test "addisjonen av to tall" do
assert MathOperations.add(1, 2) == 3
end
end
For å kjøre testene dine, bruk mix test
-kommandoen i terminalen din. Hvis MathOperations.add/2
-funksjonen korrekt legger til to tall, vil du se en utskrift som ligner på:
..
Ferdig på 0.03 sekunder
1 test, 0 feil
For tester som involverer eksterne tjenester eller APIer, kan du ønske å bruke mockbiblioteker, slik som mox
, for å unngå å treffe faktiske tjenester:
- Legg til
mox
i dine avhengigheter imix.exs
:
defp deps do
[
{:mox, "~> 1.0.0", only: :test},
# andre avhengigheter...
]
end
- Definer en mockmodul i din testhjelper (
test/test_helper.exs
):
Mox.defmock(HTTPClientMock, for: HTTPClientBehaviour)
- Bruk mocken i testtilfellet ditt:
# test/some_api_client_test.exs
defmodule SomeAPIClientTest do
use ExUnit.Case
import Mox
# Dette forteller Mox å verifisere at denne mocken ble kalt som forventet
setup :verify_on_exit!
test "henter data fra APIet" do
# Sett opp mockresponsen
expect(HTTPClientMock, :get, fn _url -> {:ok, "Mocket respons"} end)
assert SomeAPIClient.get_data() == "Mocket respons"
end
end
Når du kjører mix test
, lar denne oppsettet deg isolere enhetstestene dine fra ekte eksterne avhengigheter, og fokuserer på oppførselen til din egen kode. Dette mønsteret sikrer at testene dine kjører raskt og forblir pålitelige, uavhengig av ekstern tjenestestatus eller internettforbindelse.