在用convey包进行单元测试的时候,遇到某些被测函数的入参是:ctx *gin.Context。
git
github.com/smartystreets/goconvey/convey
此时可以按照下面的方法new一个测试context即可,前面的new request需要带着哈。
go
func TestAssembleStock(t *testing.T) {
r := &articleService{} // Create an instance of the articleService // Sample dataJson
request := vo.ArticleRequest{} // Create a sample ArticleRequest
request.Version = "6.0.0"// 创建一个新的 Gin 引擎
// 创建一个模拟的 HTTP 请求
req, err := http.NewRequest("GET", "/your/route", nil)
if err != nil {
t.Fatal(err)
}
// 使用 gin 的上下文构造函数创建一个上下文对象
ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
ctx.Request = req
Convey("Given a list of stocks", t, func() {
jsonData := []byte(`{"result":{"data":[{"stocks":[{"code":["hk02331","02331"],"market":"hk","other_codes":[{"code":["usLNNGY","LNNGY"],"market":"us"},{"code":["hk82331","82331"],"market":"hk"}],"tf":13,"type":"stocks","weight":0.255,"word":"李宁"},{"code":["hk00012","00012"],"market":"hk","tf":1,"type":"stocks","weight":0.02,"word":"恒基地产"}]}]}}`)
Convey("When content is present with content for stocks", func() {
result, err := r.assembleStock(ctx, request, jsonData) // Call the checkWord function
So(err, ShouldBeNil) // Assert that error is nil
So(string(result), ShouldEqual, `1`)
})
})
}