Elixir:
Testien kirjoittaminen
Kuinka:
Elixir käyttää sisäänrakennettuna testikehyksenään ExUnitia, joka on erittäin tehokas ja helppokäyttöinen. Tässä on yksinkertainen esimerkki:
- Luo uusi testitiedosto
test-hakemistoon Elixir-projektissasi. Esimerkiksi, jos testaat moduulia nimeltäMathOperations, testitiedostosi voisi ollatest/math_operations_test.exs.
# test/math_operations_test.exs
defmodule MathOperationsTest do
use ExUnit.Case
# Tämä on yksinkertainen testitapaus tarkistamaan yhteenlaskufunktion
test "kahden numeron yhteenlasku" do
assert MathOperations.add(1, 2) == 3
end
endSuorittaaksesi testisi, käytä mix test-komentoa terminaalissasi. Jos MathOperations.add/2-funktio laskee kaksi numeroa oikein yhteen, näet tulosteen, joka on samankaltainen kuin:
..
Valmis 0.03 sekunnissa
1 testi, 0 epäonnistumistaTesteissä, jotka liittyvät ulkoisiin palveluihin tai API:hin, saatat haluta käyttää mock-kirjastoja, kuten mox, välttääksesi oikeiden palveluiden käytön:
- Lisää
moxriippuvuuksiisimix.exs-tiedostoon:
defp deps do
[
{:mox, "~> 1.0.0", only: :test},
# muita riippuvuuksia...
]
end- Määritä mock-moduuli testiapurissasi (
test/test_helper.exs):
Mox.defmock(HTTPClientMock, for: HTTPClientBehaviour)- Käytä mockia testitapauksessasi:
# test/some_api_client_test.exs
defmodule SomeAPIClientTest do
use ExUnit.Case
import Mox
# Tämä käskee Moxia varmistamaan, että tämä mock kutsuttiin odotetulla tavalla
setup :verify_on_exit!
test "hakee dataa API:sta" do
# Aseta mock-vastaus
expect(HTTPClientMock, :get, fn _url -> {:ok, "Mock-vastaus"} end)
assert SomeAPIClient.get_data() == "Mock-vastaus"
end
endKun suoritat mix test, tämä asetus mahdollistaa yksikkötestiesi eristämisen todellisista ulkoisista riippuvuuksista, keskittyen oman koodisi käyttäytymiseen. Tämä malli varmistaa, että testisi suoritetaan nopeasti ja pysyvät luotettavina riippumatta ulkoisen palvelun tilasta tai internet-yhteydestä.