Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Golang unittest http处理程序_Unit Testing_Go - Fatal编程技术网

Unit testing Golang unittest http处理程序

Unit testing Golang unittest http处理程序,unit-testing,go,Unit Testing,Go,我想做一个简单的服务器,可以接收来自服务的web钩子请求,并为我处理它们。为了好玩,我想在Go中构建它,因为这听起来是一种很好的语言,这是一个简单的项目开始 服务器似乎工作正常,但我无法让unittest正常工作。经检查,似乎每个url都给出了404。我做错了什么 梅因,加油 main_test.go 处理程序已在main中注册,但在运行单元测试时不会调用main。因此,当您尝试通过DefaultMux进行测试时,不会注册任何处理程序,并且会得到404。但是,通常测试处理程序,而不是mux;因此

我想做一个简单的服务器,可以接收来自服务的web钩子请求,并为我处理它们。为了好玩,我想在Go中构建它,因为这听起来是一种很好的语言,这是一个简单的项目开始

服务器似乎工作正常,但我无法让unittest正常工作。经检查,似乎每个url都给出了404。我做错了什么

梅因,加油

main_test.go


处理程序已在
main
中注册,但在运行单元测试时不会调用
main
。因此,当您尝试通过
DefaultMux
进行测试时,不会注册任何处理程序,并且会得到404。但是,通常测试处理程序,而不是mux;因此,不是这一行:

http.DefaultServeMux.ServeHTTP(rr, req)
您可以改为测试:

pingHandler(rr, req)
即使没有执行
main
来注册处理程序,它也会工作,因为您现在直接测试处理程序

您还应该使用创建测试请求
http.NewRequest
用于创建在
客户端中使用的请求

http.DefaultServeMux.ServeHTTP(rr, req)
pingHandler(rr, req)