gpt4 book ai didi

unit-testing - 使用 httptest 或 http 包模拟服务器故障

转载 作者:IT王子 更新时间:2023-10-29 02:20:39 25 4
gpt4 key购买 nike

如何在隔离单元测试中使用httptest或http包模拟服务器故障?

详细信息:
我一直在使用 gorilla websockets,所以 mt, msg, err := t.conn.ReadMessage() mt 值必须是 -1 当服务器宕机时。我尝试了以下作为主要选项:

var srv *httptest.Server

srv = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
_, err := wsUpgrader.Upgrade(w, r, nil)
if err != nil {
t.Fatal(err)
}

srv.Close()
}))

但是客户端根本没有收到任何消息。我也尝试过标准的 http 服务器,但是在 recover() 客户端也没有收到任何消息之后。 srv.CloseClientConnections() 没有帮助,客户端像以前一样等待消息。

最佳答案

在 WS 服务器端的客户端连接上调用 conn.Close() 即可终止连接而不发送关闭帧。这将触发连接异常关闭的行为,消息类型的值为 -1

连接升级到 websocket 后,它被劫持了,一般的 http 服务器无法再处理这个连接,这就是为什么服务器关闭对被劫持的连接不起作用。

关于unit-testing - 使用 httptest 或 http 包模拟服务器故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51308450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com