ermek6
@ermek6
::Живу с удовольствием::

Почему Go не видит переменную установленную в TestMain?

Изучаю тут Go по вот этому курсу и возникла у меня проблема:

Есть функция TestMain
func TestMain(m *testing.M) {

	databaseURL := os.Getenv("DATABASE_URL")
	if databaseURL == "" {
		databaseURL = "host=localhost dbname=restapi_test user=uzr password=secret"
	}

	fmt.Println("1: DB URL: ===>", databaseURL)

	os.Exit(m.Run())

}


и функция тестирования

func TestUserRepository_Create(t *testing.T) {
	//databaseURL = "host=localhost dbname=restapi_test user=uzr password=secret"
	fmt.Println("2: DB URL: ===>", databaseURL)
	s, teardown := store.TestStore(t, databaseURL)
	defer teardown("users")

	u, err := s.User().Create(&model.User{Email: "user@example.org"})
	assert.NoError(t, err)
	assert.NotNil(t, u)
}


Запуск теста выдает вот такой вывод (при определении значения databaseURL в самом тесте все Ок)

1: DB URL: ===> host=localhost dbname=restapi_test user=uzr password=secret
2: DB URL: ===> 
2020/06/22 09:49:35 ===> 
--- FAIL: TestUserRepository_Create (0.02s)
    userrepository_test.go:15: pq: password authentication failed for user "yermek"
FAIL
FAIL	github.com/yermek/http-rest-api/internal/app/store	0.039s
FAIL


Собственно, вопрос в сабже -- почему же значение databaseURL не передается в тест?
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
tumbler
@tumbler
бекенд-разработчик на python
databaseURL := os.Getenv("DATABASE_URL")
Потому что вы в TestMain объявляете локальную переменную, не трогая глобальную.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Level Travel Москва
от 130 000 до 200 000 ₽
от 3 000 до 4 200 $
Digital Horizon Москва
До 220 000 ₽
11 авг. 2020, в 16:07
4000 руб./за проект
11 авг. 2020, в 15:28
3000 руб./за проект
11 авг. 2020, в 15:06
10000 руб./за проект