Я пишу http-клиент для службы и для тестирования. Я хочу использовать сервер net/http/httptest
вместо вызова удаленного API. Я могу легко сделать это, если я сделаю baseUrl
глобальной переменной, которая будет установлена на URL-адрес моего тестового сервера. Однако это делает производственный код более хрупким, потому что baseUrl
также может быть изменен во время выполнения. Мое предпочтение было бы сделать baseUrl
a const
для производственного кода, но все же быть в состоянии изменить.Redefine const in golang для теста
package main
const baseUrl = "http://google.com"
// in main_test.go
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
...
}
const baseUrl = ts.URL
// above line throws const baseUrl already defined error
Спасибо за ответ, я закончил тем, что сбросил константу, добавив глобальный 'var testServer * httptest.Server' и строку func getURL(), которая проверяет, нет ли testServer. Логическое бытие, менее вероятный производственный код установит testServer, а затем случайно изменит глобальную строку var – Krut