🥇 Pruebas, Tablas de pruebas.

En el caso en el cual se requieran realizar multiples entradas/salidas a la misma función, es posible echar mano de un mapa con dichas referencias.

Tenemos en el siguiente ejemplo un archivo persona.go con el paquete paquete.

package persona

func EsAdulto(edad int) bool {
    return edad >= 18
}
package persona

import "testing"

type EsAdultoTest struct {
    edad int
    want bool
}

var esAdultoTests = []EsAdultoTest{
    {edad: 17, want: false},
    {edad: 18, want: true},
    {edad: 19, want: true},
}

func TestEsAdulto(t *testing.T) {
    for _, test := range esAdultoTests {
        got := EsAdulto(test.edad)
        if got != test.want {
            t.Errorf("EsAdulto(%v) = %v, se esperaba %v", test.edad, got, test.want)
        }
    }
}

Hemos creado una estructura para almacenar las pruebas.

type EsAdultoTest struct {
    edad int
    want bool
}

Almacenamos en un arreglo los valores a enviar y los valores esperados.

var esAdultoTests = []EsAdultoTest{
    {edad: 17, want: false},
    {edad: 18, want: true},
    {edad: 19, want: true},
}

Ahora podemos recorrer el arreglo de las pruebas y utilizamos el patrón.

for _, test := range esAdultoTests {
    got := EsAdulto(test.edad)
    if got != test.want {
        t.Errorf("EsAdulto(%v) = %v, se esperaba %v", test.edad, got, test.want)
    }
}

Y tendremos en la salida.

PASS
ok      github.com/arumals/como-aprendi-go/073_tabla_de_pruebas 0.005s
Pruebas, El paquete testing. Pruebas, Benchmark.
comments powered by Disqus