
https://github.com/gorilla/websocket
ws = new WebSocket("ws://localhost:8080/mypath")ws.onmessage = function(ev) { console.log(ev.data) }ws.send("hello") 当我在Chrome控制台中使用它时,这是有效的,但我的问题是,有没有办法在go中进行一些单元测试并避免使用Chrome控制台?
解决方法 使用 net/http/httptest包创建 test server.使用Gorilla客户端连接到该服务器.读取和写入消息以测试连接.package mainimport ( "net/http" "net/http/httptest" "strings" "testing" "github.com/gorilla/websocket")var upgrader = websocket.Upgrader{}func echo(w http.ResponseWriter,r *http.Request) { c,err := upgrader.Upgrade(w,r,nil) if err != nil { return } defer c.Close() for { mt,message,err := c.ReadMessage() if err != nil { break } err = c.WriteMessage(mt,message) if err != nil { break } }}func TestExample(t *testing.T) { // Create test server with the echo handler. s := httptest.NewServer(http.HandlerFunc(echo)) defer s.Close() // Convert http://127.0.0.1 to ws://127.0.0. u := "ws" + strings.TrimPrefix(s.URL,"http") // Connect to the server ws,_,err := websocket.DefaultDialer.Dial(u,nil) if err != nil { t.Fatalf("%v",err) } defer ws.Close() // Send message to server,read response and check to see if it's what we expect. for i := 0; i < 10; i++ { if err := ws.WriteMessage(websocket.TextMessage,[]byte("hello")); err != nil { t.Fatalf("%v",err) } _,p,err := ws.ReadMessage() if err != nil { t.Fatalf("%v",err) } if string(p) != "hello" { t.Fatalf("bad message") } }} 总结 以上是内存溢出为你收集整理的在golang中为ws创建单元测试全部内容,希望文章能够帮你解决在golang中为ws创建单元测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)