Como escrever testes automatizados em GO
Função 내보내기
Pra começar precisamos definir as funções que queremos exportar como publicas, o GO thinka funções publicas todas as funções que começam com a letra maiúscula, e thinka como privada todas as funções que começam com a letra minúscula
Criando o teste
No GO é convencionado que todos os arquivos de teste terminem com
_test
além disso o GO não precisa de uma lib externa como por exemplojest
no javascript para fazer os testes, ele já vem com a ferramenta de testes por padrão. Porem para facilitar na hora de fazer as comparações de resultados precisamos instalar a lib testify
com o seguinte comandogo get github.com/stretchr/testify/require
Para o caso do teste vamos testar a função Enable que pertence a
struct
제품type Product struct {
ID string
Name string
Price float64
Status string
}
func (p *Product) Enable() error {
if p.Price > 0 {
p.Status = ENABLED
return nil
}
return errors.New("Price must be greater than 0")
}
A struct no go funciona semelhante a uma classe em linguagens orientadas a objetos, onde declaramos a struct com todos as valores que ela precisa, e associamos metodos a ela
E para criar o teste em sí vamos criar o arquivo
product_test.go
onde o package dele vai ser o mesmo package do arquivo original mas com um test no final e ai vamos declarar a função como`Test{구조체 이름}{메토도 이름} (t *testing.T)`
func TestProduct_Enable(t *testing.T) {
product := application.Product{}
product.Name = "Hello"
product.Status = application.DISABLED
product.Price = 10
err := product.Enable()
require.Nil(t, err)
product.Price = 0
err = product.Enable()
require.Equal(t, "Price must be greater than 0", err.Error())
}
o primeiro는 queremos garantir que não deu erro e no segundo queremos ver se deu erro가 필요합니다. Podemos fazer ambos os testes na mesma função
보너스: Validando campos
Nesse mesmo projeto utili a lib
asaskevich/govalidator
para validar se os campos estão vindo como eu espero no Product.essa lib da seguinte forma 활용
go get github.com/asaskevich/govalidator
func init() {
govalidator.SetFieldsRequiredByDefault(true)
}
e na Struct onde defino os campos de Product ao lado coloquei as tags
type Product struct {
ID string `valid:"uuidv4"`
Name string `valid:"required"`
Price float64 `valid:"float,optional"`
Status string `valid:"required"`
}
para validar se o id é uuidv4 se veio o nome e o status e se o preço é float
Reference
이 문제에 관하여(Como escrever testes automatizados em GO), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yanpiing/como-escrever-testes-automatizados-em-go-b2d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)