29/100 Dias de Golang - Testes com Testify
Table of Contents
#
Testes com Testify
Toda a concepção do Go e as escolhas arquiteturais da linguagem são direcionadas para tornar a linguagem simples. Podemos ver isso claramente nos testes:
if total != expected {
t.Errorf("Esperava %d recebi %d", expected, total)
}
Não temos um assert
como em outras linguagens para verificar os valores. Para preencher esse “gap” no coração dos programadores temos a lib Testify. Vamos criar alguns testes com ela, mas antes vamos instalar a lib no nosso projeto:
go get github.com/stretchr/testify
Continuando com o exemplo do pacote “utils”, vamos testar a função de soma:
func Soma(a int, b int) int {
return a + b
}
Veja o teste com testify:
func TestSoma(t *testing.T) {
result := Soma(5, 5)
assert.Equal(t, 10, result)
}
Lembre de importar a lib "github.com/stretchr/testify/assert"
O testify fornece várias funções para fazermos o assert. Veja esse exemplo para verificar o nil
. Vamos criar uma função de Divisão que retorna um float e um error.
func Divisao(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("nao pode dividir por 0")
}
return a / b, nil
}
Veja como podemos estruturar os testes nesses casos:
func TestDivisao(t *testing.T) {
result, err := Divisao(10, 5)
assert.Nil(t, err)
assert.Equal(t, result, 2.0)
}
func TestQuandoDivisorEhZero(t *testing.T) {
result, err := Divisao(10, 0)
assert.Error(t, err)
assert.Zero(t, result)
}
Veja que usamos as funções assert.Nil(t, err)
para verificar se o valor é nil
e assert.Error(t, err)
para verificar se o valor é um erro. Recomento fortemente a leitura da documentação dessa lib!
De forma geral achei mais natural trabalhar com testes utilizando a lib testify. Mas acho que isso depende de gosto do programador.