Я запускаю UT на некоторых вызовах отдыха, создавая тестовый сервер http на языке go. Мой код выглядит следующим образом.Использование пользовательского url для httptest.NewServer Go lang
type student struct{
FirstName string
LastName string
}
func testGetStudentName() {
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
response = new(student)
response.FirstName = "Some"
response.LastName = "Name"
b, err := json.Marshal(response)
if err == nil {
fmt.Fprintln(w, string(b[:]))
}
}))
defer ts.Close()
student1 := base.getStudent("123")
log.Print("testServerUrl",testServer.URL) //prints out http://127.0.0.1:49931 (port changes every time this is run)
ts.URL = "http://127.0.0.1:8099" //this assignment does not quite change the URL of the created test server.
}
В файле испытывается,
var baseURL = "http://originalUrl.com"
var mockUrl = "http://127.0.0.1:49855"
func Init(mockServer bool){
if mockServer {
baseURL = mockUrl
}
}
func getStudent(id String){
url := baseUrl + "/student/" + id
req, err := http.NewRequest("GET", url, nil)
}
Этот INIT вызывается из моего теста.
Это создает новый тестовый сервер и выполняет вызовы на случайном порту. Возможно ли запустить этот сервер на указанном порту?
У меня есть несколько API, которые я испытываю, и в этих функциях, я приобщать путь к базовому URL. В моей первоначальной функции у меня есть базовый URL-адрес, например «http://someserver.com» В разделе getStudent() Я изменяю это как baseUrl + "/ student/{id}" В getClass() я бы изменил to baseUrl + "/ class/{id}" Поскольку каждый из серверов httptest я создаю разные порты, я получаю 127.0.0.1:49855/student/1: getsockopt: connection failed –
Надеюсь, мое редактирование имеет больше смысла. Я пытаюсь объяснить это как можно лучше. В файле, который я тестирую, у меня есть Init, вызываемый тестом для изменения базового URL-адреса Вроде, var baseURL = "http://originalUrl.com" var mockUrl = "http://127.0.0.1 : 49855" FUNC Init (mockServer BOOL) { если mockServer { \t \t BaseUrl = mockUrl \t} } –
Поскольку я прилагая URL в каждом из API вызовов, он будет по-прежнему терпят неудачу. Как и я добавляю некоторое значение для url в функции getStudent, я бы тоже сделал в функции getClass. В основном URL-адрес изменяется внутри функций. С пользовательским URL/портом я могу указать конечный URL-адрес в testServer –