Alguns meses atrás, eu estava escrevendo uma aplicação. Quando fui escrever os testes do meu repositório, fiquei incomodado em ficar copiando e colando parte do código para gerar uma nova instância do repositório para cada ação do CRUD que eu queria testar. Foi então que, procurando na documentação do testify, descobri sobre o package suite.
Se você nunca utilizou o testify, recomendo que leia primeiro o nosso post “Como escrever testes com testify”.
Nesse post, vou mostrar como podemos escrever testes unitários utilizando o package testify suite e sqlmock.
Para que o post não fique muito extenso, ao invés de implementar o repositório também, vamos só imaginar que ele tem os métodos Insert, Update, Delete e FindByID implementados.
Iniciando o testify suite
Para começar, precisamos criar uma struct que faça o embed da struct suite.Suite
. Esse embed é obrigatório. Todos os outros campos não são obrigatórios. São apenas uma forma de facilitar a nossa vida na hora da escrita dos testes.
type RepositorySuite struct {
suite.Suite
conn *sql.DB
DB *gorm.DB
mock sqlmock.Sqlmock
repo *repository
person *Person
}
Leia mais »