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

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

Войти через центр авторизации
Похожие вопросы