Elixir:
Skriva tester
Hur man gör:
Elixir använder ExUnit som sitt inbyggda testramverk, vilket är extremt kraftfullt och enkelt att använda. Här är ett grundläggande exempel:
- Skapa en ny testfil i
test
-mappen i ditt Elixir-projekt. Till exempel, om du testar en modul med namnetMathOperations
, kan din testfil varatest/math_operations_test.exs
.
# test/math_operations_test.exs
defmodule MathOperationsTest do
use ExUnit.Case
# Det här är ett enkelt testfall för att kontrollera additions funktionen
test "additionen av två tal" do
assert MathOperations.add(1, 2) == 3
end
end
För att köra dina tester, använd kommandot mix test
i din terminal. Om funktionen MathOperations.add/2
korrekt adderar två tal, kommer du att se utskrift liknande:
..
Avslutad på 0.03 sekunder
1 test, 0 fel
För tester som involverar externa tjänster eller API:er, kan du vilja använda mockbibliotek, såsom mox
, för att undvika att träffa faktiska tjänster:
- Lägg till
mox
i dina beroenden imix.exs
:
defp deps do
[
{:mox, "~> 1.0.0", only: :test},
# andra beroenden...
]
end
- Definiera en mockmodul i din testhjälpare (
test/test_helper.exs
):
Mox.defmock(HTTPClientMock, för: HTTPClientBehaviour)
- Använd mocken i ditt testfall:
# test/some_api_client_test.exs
defmodule SomeAPIClientTest do
use ExUnit.Case
import Mox
# Det här säger till Mox att verifiera att den här mocken kallades som förväntat
setup :verify_on_exit!
test "hämtar data från API:et" do
# Ställ in mocksvaret
expect(HTTPClientMock, :get, fn _url -> {:ok, "Mockat svar"} end)
assert SomeAPIClient.get_data() == "Mockat svar"
end
end
När du kör mix test
, gör den här inställningen att du kan isolera dina enhetstester från verkliga externa beroenden, och fokusera på beteendet hos din egen kod. Detta mönster säkerställer att dina tester körs snabbt och förblir tillförlitliga, oavsett externa tjänsters status eller internetanslutning.