Giter VIP home page Giter VIP logo

Comments (6)

kzjeef avatar kzjeef commented on April 24, 2024 34

Thanks for point out the #37.
I endup for this solution for testing without rewrite the router related code:.

in main.go

func GetMainEngine() *gin.Engine {
    r := gin.Default()

    v1 := r.Group("/v1")
    {
        v1.POST("/login", model.Login)
        v1.POST("/logou", model.Logout)
        v1.POST("/signup", model.Signup)
    }
    return r
}

func main() {
    GetMainEngine().Run(":8080")
}

in the main_test.go

func TestUserRegAndLogin(t *testing.T) {

    setupDB()
    defer clearDB()

    ts := httptest.NewServer(GetMainEngine())
... Other will be same.

And Close the issue.

from gin.

EveryDayNew avatar EveryDayNew commented on April 24, 2024 18

@ernsheong I,m new and first use issues.How to write test? I want to test 'Get'.This is a traditional MVC.I just copied controller.
`package main

import (
"fmt"
"devops/xflow-be/conf"
"devops/xflow-be/router"
"xngo/lib/xlog"
)

func main() {

xlog.Logger.Info("app start")

r := router.NewRouter()

addr := fmt.Sprintf(":%d", conf.Config.App.Port)
r.Run(addr)

}`

`package router

import (
"github.com/gin-gonic/gin"
"devops/xflow-be/controller"
"devops/xflow-be/middleware"
)

func NewRouter() *gin.Engine {
app := gin.New()
skelCtl := controller.NewSkelController()
skelGroup := app.Group("/skel")
{
skelGroup.POST("/get", skelCtl.Get)
}
return app
`

`package controller

import (
"github.com/gin-gonic/gin"
"devops/xflow-be/include/entity"
"devops/xflow-be/include/req"
"devops/xflow-be/service"
)

type BaseController struct {

}

type SkelController struct {
BaseController
}

func NewSkelController() *SkelController {
return &SkelController{}
}

func (ts *SkelController)newService() *service.SkelService {
return service.NewSkelService()
}

func (ts *SkelController) Get(ctx *gin.Context) {
reqData := &req.ByIdReq{}
if err := ctx.BindJSON(reqData); err != nil {
ts.ReplyFail(ctx, err)
return
}

if ent, err := ts.newService().Get(reqData.Id); err != nil {
	ts.ReplyFail(ctx, err)
} else {
	ts.ReplyOk(ctx, ent)
}

}

func (ts *BaseController) ReplyOk(ctx *gin.Context, data interface{}) {
xlog.Logger.Info("replay ok", zap.Any("data", data))
if data == nil || data == "" {
ctx.JSON(http.StatusOK, gin.H{
"ret": 1,
})
} else {
ctx.JSON(http.StatusOK, gin.H{
"ret": 1,
"data": data,
})
}
}

func (ts *BaseController) ReplyFail(ctx *gin.Context, err interface{}) {
xlog.Logger.Error("replay fail", zap.Any("err", err))
ctx.JSON(http.StatusOK, gin.H{
"ret": 1000,
"msg": err,
})
}
package req

type ByIdReq struct {
Id interface{}
}

type ByFieldReq struct {
Name string
Value interface{}
}
`

from gin.

ernsheong avatar ernsheong commented on April 24, 2024 1

@shackra see https://github.com/gin-gonic/gin/pull/37/files

from gin.

EveryDayNew avatar EveryDayNew commented on April 24, 2024 1

@ernsheong you saved me

from gin.

javierprovecho avatar javierprovecho commented on April 24, 2024

Please check some of the unit tests at #37. Is this what you were looking for?

from gin.

shackra avatar shackra commented on April 24, 2024

@kzjeef can you expand the "... Other will be same." part to have a complete answer?

from gin.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.