Começar a escrever testes
Antes de começarmos a escrever nosso programa, vamos falar sobre os testes e criar o primeiro deles. O teste de pacote fornece suporte para testes automatizados de pacotes Go. O teste é importante para que o código funcione conforme o esperado. Em geral, deve haver pelo menos um teste para cada função em um pacote para confirmar a funcionalidade.
Uma boa prática a seguir durante a codificação é usar a abordagem TDD (desenvolvimento orientado por testes). Com essa abordagem, vamos escrever nossos testes primeiro. Vamos verificar se esses testes falham porque o código que eles testam ainda não existem. Em seguida, escreveremos o código que satisfaz os testes.
Criar o arquivo de teste
Primeiro, precisamos criar o arquivo Go para manter todos os nossos testes para o pacote bankcore
. Quando você cria um arquivo de teste, o nome do arquivo precisa terminar com _test.go
. Você pode colocar qualquer coisa antes, mas o padrão é usar o nome do arquivo que você está testando.
Além disso, cada teste que você deseja escrever deve ser uma função que começa com Test
. Em seguida, você geralmente escreve um nome descritivo para o teste que está escrevendo, como TestDeposit
.
Acesse a localização $GOPATH/src/bankcore/
e crie um arquivo chamado bank_test.go
com o seguinte conteúdo:
package bank
import "testing"
func TestAccount(t *testing.T) {
}
Abra um terminal e verifique se você está na localização $GOPATH/src/bankcore/
. Em seguida, use o seguinte comando para executar os testes em modo detalhado:
go test -v
O Go vai procurar todos os arquivos *_test.go
para executar os testes, para que você veja o seguinte resultado:
=== RUN TestAccount
--- PASS: TestAccount (0.00s)
PASS
ok github.com/msft/bank 0.391s
Escrever um teste com falha
Antes de escrevermos qualquer código, vamos primeiro escrever um teste com falha para ele usando TDD. Modifique a função TestAccount
com o seguinte código:
package bank
import "testing"
func TestAccount(t *testing.T) {
account := Account{
Customer: Customer{
Name: "John",
Address: "Los Angeles, California",
Phone: "(213) 555 0147",
},
Number: 1001,
Balance: 0,
}
if account.Name == "" {
t.Error("can't create an Account object")
}
}
Apresentamos uma estrutura para a conta e o cliente que ainda não implementamos. E estamos usando a função t.Error()
para informar que o teste falhará se algo não acontecer na forma como deveria acontecer.
Além disso, observe que o teste tem a lógica para criar um objeto de conta (que ainda não existe). Mas estamos projetando neste momento como gostaríamos de interagir com nosso pacote.
Observação
Forneceremos o código para os testes porque não queremos explicar linha por linha. Mas seu modelo mental deve ser começar aos poucos e fazer quantas iterações forem necessárias.
Em nosso caso, vamos fazer apenas uma iteração: escrever o teste, verificar se ela falha e escrever o código que satisfaça o teste. Quando você codifica por conta própria, deve começar de maneira simples e adicionar complexidade conforme avança.
Quando você executar o comando go test -v
, deverá ver um teste com falha no resultado:
# github.com/msft/bank [github.com/msft/bank.test]
.\bank_test.go:6:13: undefined: Account
.\bank_test.go:7:13: undefined: Customer
FAIL github.com/msft/bank [build failed]
Vamos parar por aqui por enquanto. Vamos concluir esse teste e criar testes à medida que escrevermos a lógica para nosso sistema bancário online.