如何为 googollee socket.io 处理程序编写单元测试
How to write unit test for googollee socket.io handlers
我正在使用一个 go 库:github.com/googollee/go-socket.io
我想知道如何为连接事件编写一个非常简单的测试,例如,如果我想检查是否没有返回错误。
package main
import (
"fmt"
"log"
"net/http"
socketio "github.com/googollee/go-socket.io"
)
func main() {
server := socketio.NewServer(nil)
server.OnConnect("/", func(s socketio.Conn) error {
s.SetContext("")
fmt.Println("connected:", s.ID())
return nil
})
}
创建一个将 socketio.Conn 接口作为参数的单独函数,并将其传递给 server.OnConnect
而不是匿名函数。
然后你可以模拟 socketio.Conn 来对你的函数进行单元测试。
例如,将您的代码片段更改为:
package main
import (
"fmt"
"log"
"net/http"
socketio "github.com/googollee/go-socket.io"
)
func main() {
server := socketio.NewServer(nil)
server.OnConnect("/", handleOnConnect)
}
func handleOnConnect(s socketio.Conn) error {
s.SetContext("")
fmt.Println("connected:", s.ID())
return nil
}
现在,您所要做的就是测试 handleOnConnect
。因为 socketio.Conn
是一个接口,你可以创建一个模拟来测试这个函数而不用担心 socketio
内部。
您还可以创建一个新接口,它是 socketio.Conn
的子集,具体取决于您的用例,以简化模拟。
我正在使用一个 go 库:github.com/googollee/go-socket.io 我想知道如何为连接事件编写一个非常简单的测试,例如,如果我想检查是否没有返回错误。
package main
import (
"fmt"
"log"
"net/http"
socketio "github.com/googollee/go-socket.io"
)
func main() {
server := socketio.NewServer(nil)
server.OnConnect("/", func(s socketio.Conn) error {
s.SetContext("")
fmt.Println("connected:", s.ID())
return nil
})
}
创建一个将 socketio.Conn 接口作为参数的单独函数,并将其传递给 server.OnConnect
而不是匿名函数。
然后你可以模拟 socketio.Conn 来对你的函数进行单元测试。
例如,将您的代码片段更改为:
package main
import (
"fmt"
"log"
"net/http"
socketio "github.com/googollee/go-socket.io"
)
func main() {
server := socketio.NewServer(nil)
server.OnConnect("/", handleOnConnect)
}
func handleOnConnect(s socketio.Conn) error {
s.SetContext("")
fmt.Println("connected:", s.ID())
return nil
}
现在,您所要做的就是测试 handleOnConnect
。因为 socketio.Conn
是一个接口,你可以创建一个模拟来测试这个函数而不用担心 socketio
内部。
您还可以创建一个新接口,它是 socketio.Conn
的子集,具体取决于您的用例,以简化模拟。