Elixir:
Scrivere test
Come fare:
Elixir utilizza ExUnit come framework di test incorporato, che è estremamente potente e facile da usare. Ecco un esempio di base:
- Crea un nuovo file di test nella directory
testdel tuo progetto Elixir. Ad esempio, se stai testando un modulo chiamatoMathOperations, il tuo file di test potrebbe esseretest/math_operations_test.exs.
# test/math_operations_test.exs
defmodule MathOperationsTest do
use ExUnit.Case
# Questo è un semplice caso di test per verificare la funzione di addizione
test "l'addizione di due numeri" do
assert MathOperations.add(1, 2) == 3
end
endPer eseguire i tuoi test, usa il comando mix test nel tuo terminale. Se la funzione MathOperations.add/2 aggiunge correttamente due numeri, vedrai un output simile a:
..
Completato in 0.03 secondi
1 test, 0 fallimentiPer i test che coinvolgono servizi esterni o API, potresti voler utilizzare librerie di mock, come mox, per evitare di colpire i servizi reali:
- Aggiungi
moxalle tue dipendenze inmix.exs:
defp deps do
[
{:mox, "~> 1.0.0", only: :test},
# altre dipendenze...
]
end- Definisci un modulo mock nel tuo helper di test (
test/test_helper.exs):
Mox.defmock(HTTPClientMock, per: HTTPClientBehaviour)- Usa il mock nel tuo caso di test:
# test/some_api_client_test.exs
defmodule SomeAPIClientTest do
use ExUnit.Case
import Mox
# Questo indica a Mox di verificare che questo mock sia stato chiamato come previsto
setup :verify_on_exit!
test "ottiene dati dall'API" do
# Imposta la risposta del mock
expect(HTTPClientMock, :get, fn _url -> {:ok, "Risposta simulata"} end)
assert SomeAPIClient.get_data() == "Risposta simulata"
end
endQuando esegui mix test, questo setup ti permette di isolare i tuoi test unitari dalle vere dipendenze esterne, concentrandoti sul comportamento del tuo codice. Questo modello assicura che i tuoi test vengano eseguiti rapidamente e rimangano affidabili, indipendentemente dallo stato del servizio esterno o dalla connettività internet.