-
Notifications
You must be signed in to change notification settings - Fork 64
Test tips
Andrey Kuchin edited this page May 1, 2020
·
7 revisions
# Запускаем тесты по всему репозиторию из корня репозитория.
go test -coverpkg=./... -coverprofile=cover.raw ./...
# Удаляем сгенерённые файлы из финального покрытия.
# Генераторы были протестированы своими тестами. Моки
# не нуждаются в тестах, но используя их, мы сразу
# покрываем их на 100%
fgrep -v "easyjson" cover.raw > cover.out1
fgrep -v "mock" cover.out1 > cover.out2
# Проверяем покрытие без сгенерённых файлов.
go tool cover -func=cover.out2
github.com/stretchr/testify/require
Пакет имеет много различных методов для того, чтобы одной командой сопоставить ожидаемое с реальным.
// вместо того, чтобы писать так
got, err := someFoo(arg1, arg2)
if err != nil {
t.Fatalf("unexpected error while doing someFoo: %s", err)
}
if got != expected {
t.Fatalf("expected (%v), got (%v)", expected, got)
}
// можно писать вот так
got, err := someFoo(arg1, arg2)
require.NoError(t, err, "unexpected error while doing someFoo")
require.Equal(t, expected, got)
При этом сам пакет имеет отличное форматирование отличия одного от другого.
TestCheckSessionRequestHeaders/simple: check_session_test.go:124:
Error Trace: check_session_test.go:124
Error: Not equal:
expected: http.Header{"Cookie":[]string{"cookie"}, "Referer":[]string{"http://mail.ru/me"}, "User-Agent":[]string{"ua"}, "X-Real-Ip":[]string{"ip"}}
actual : http.Header{"Cookie":[]string{"cookie"}, "Referer":[]string{"http://mail.ru/me"}, "User-Agent":[]string{"ua"}, "X-Real-Ip":[]string{"i1p"}}
Diff:
--- Expected
+++ Actual
@@ -11,3 +11,3 @@
(string) (len=9) "X-Real-Ip": ([]string) (len=1) {
- (string) (len=2) "ip"
+ (string) (len=3) "i1p"
}
Test: TestCheckSessionRequestHeaders/simple
--- FAIL: TestCheckSessionRequestHeaders/simple (0.00s)