Pular para o conteúdo principal

victorstein.dev

63/100 Dias de Golang - Gerando dados com Faker

Table of Contents

# Gerando dados com Faker

Para não testarmos os dados sempre com o John Doe, temos a lib Faker ela permite gerar dados aleatórios para várias situações: nomes, endereços, números, textos e vários outros dados. Podemos usar isso em testes automatizados, mocks, geração de dados para popular um banco, …

Para instalar a lib:

go get -u github.com/go-faker/faker/v4

Vamos criar um script que define uma struct de User e vamos gerar dados fake para esse user. Veja que usamos o padrão das struct tags para definir as condições para o Faker

package main

import (
    "fmt"
    "github.com/go-faker/faker/v4"
)

type User struct {
    ID        int    `faker:"boundary_start=1, boundary_end=1000"`
    FirstName string `faker:"first_name"`
    LastName  string `faker:"last_name"`
    Email     string `faker:"email"`
    Age       int    `faker:"boundary_start=18, boundary_end=99"`
}

func main() {
    user := User{}
    faker.FakeData(&user)
    fmt.Printf("%+v\n", user)
}

Veja a saída desse script:

{ID:203 FirstName:Taurean LastName:Keeling Email:dVFFsSR@KDitxdJ.com Age:89}

Uma coisa legal é fazer dados fake para testes.

func TestCreateUser(t *testing.T) {
    user := User{}
    faker.FakeData(&user)

    if user.ID == 0 {
        t.Error("Expected ID to be non-zero")
    }

    if user.Email == "" {
        t.Error("Expected Email to be populated")
    }
}