Как правильно создать макет http.request в golang для моего теста? - PullRequest
2 голосов
/ 30 марта 2019

Я хочу написать контрольный пример для проверки функции парсера параметров.Ниже приведен пример кода для макета http.request

rawUrl := "http://localhost/search/content?query=test"

func createSearchRequest(rawUrl string) SearchRequest {
    api := NewWebService()

    req, err := http.NewRequest("POST", rawUrl, nil)
    if err != nil {
        logger.Fatal(err)
    }
    logger.Infof("%v", req)
    return api.searchRequest(req)
}

Мой веб-сервер использует github.com / gorilla / mux в качестве маршрута

router := mux.NewRouter()

router.HandleFunc("/search/{query_type}", searchApiService.Search).Methods("GET")

Нов моем тестовом примере я не могу получить {query_type} из макета http.request

func (api WebService) searchRequest(req *http.Request){
    // skip ....

    vars := mux.Vars(req)
    queryType := vars["query_type"]
    logger.Infof("queryType:%v", queryType)

    //skip ....
}

Как я могу получить параметр пути mux в моем тестовом примере?

1 Ответ

2 голосов
/ 30 марта 2019
func TestMaincaller(t *testing.T) {
    r,_ := http.NewRequest("GET", "hello/1", nil)
    w := httptest.NewRecorder()
   //create a map of variable and set it into mux
    vars := map[string]string{
    "parameter_name": "parametervalue",
    }

   r = mux.SetURLVars(r, vars)
  callfun(w,r)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...