Elixir:
Escribiendo pruebas
Cómo:
Elixir utiliza ExUnit como su marco de pruebas integrado, el cual es extremadamente poderoso y fácil de usar. Aquí hay un ejemplo básico:
- Crea un nuevo archivo de prueba en el directorio
testde tu proyecto Elixir. Por ejemplo, si estás probando un módulo llamadoMathOperations, tu archivo de prueba podría sertest/math_operations_test.exs.
# test/math_operations_test.exs
defmodule MathOperationsTest do
use ExUnit.Case
# Este es un caso de prueba simple para verificar la función de adición
test "la adición de dos números" do
assert MathOperations.add(1, 2) == 3
end
endPara ejecutar tus pruebas, usa el comando mix test en tu terminal. Si la función MathOperations.add/2 suma correctamente dos números, verás una salida similar a:
..
Finalizado en 0.03 segundos
1 prueba, 0 fallosPara pruebas que involucren servicios externos o APIs, podrías querer usar bibliotecas de simulación, como mox, para evitar impactar servicios reales:
- Agrega
moxa tus dependencias enmix.exs:
defp deps do
[
{:mox, "~> 1.0.0", only: :test},
# otras deps...
]
end- Define un módulo de simulación en tu ayudante de pruebas (
test/test_helper.exs):
Mox.defmock(MockDelClienteHTTP, for: ComportamientoDelClienteHTTP)- Usa la simulación en tu caso de prueba:
# test/some_api_client_test.exs
defmodule PruebaDeAlgunClienteAPI do
use ExUnit.Case
import Mox
# Esto le dice a Mox que verifique si esta simulación fue llamada como se esperaba
setup :verify_on_exit!
test "obtiene datos de la API" do
# Prepara la respuesta de la simulación
expect(MockDelClienteHTTP, :get, fn _url -> {:ok, "Respuesta simulada"} end)
assert AlgunClienteAPI.get_data() == "Respuesta simulada"
end
endCuando ejecutas mix test, esta configuración te permite aislar tus pruebas unitarias de dependencias externas reales, enfocándote en el comportamiento de tu propio código. Este patrón asegura que tus pruebas se ejecuten rápidamente y permanezcan confiables, independientemente del estado del servicio externo o la conectividad a Internet.