Skip to content

Commit 65e2a39

Browse files
committed
#### Version 1.5.7
* New Feature: Add integration Timeout Middleware, support DotWeb.UseTimeoutHook to use it * Detail: - Provide DefaultTimeoutHookHandler to simplify use, it will auto write log the req info which time out - Example: ``` golang app.UseTimeoutHook(dotweb.DefaultTimeoutHookHandler, time.Second * 2) ``` * New Feature: Add Mock module, support DotWeb.SetMock to use it * Detail: - Provide StandardMock to simplify use, it implement Mock interface - also you can create custom implement - you can register MockHandle or register return string - register key only support route - special: mock mode only effective in DevelopMode - Example: ``` golang func AppMock() dotweb.Mock{ m := dotweb.NewStandardMock() m.RegisterString("/", "mock data") return m } app.SetMock(AppMock()) ``` * 2018-08-22 10:00
1 parent 37aca3b commit 65e2a39

2 files changed

Lines changed: 17 additions & 8 deletions

File tree

example/mock/main.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,19 @@ func main() {
3030
fmt.Println("dotweb.StartServer error => ", err)
3131
}
3232

33+
// Index index handler
3334
func Index(ctx dotweb.Context) error {
3435
ctx.Response().Header().Set("Content-Type", "text/html; charset=utf-8")
3536
err := ctx.WriteString("index => ", ctx.Request().Url())
3637
return err
3738
}
3839

40+
// InitRoute init app's route
3941
func InitRoute(server *dotweb.HttpServer) {
4042
server.Router().GET("/", Index)
4143
}
4244

43-
45+
// AppMock create app Mock
4446
func AppMock() dotweb.Mock{
4547
m := dotweb.NewStandardMock()
4648
m.RegisterString("/", "mock data")

mock.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,61 @@
11
package dotweb
22

33
const(
4-
requestHeader_UseMock_Key = "dotweb_req_mock"
5-
requestHeader_UseMock_Flag = "true"
4+
requestHeaderUseMockKey = "dotweb_req_mock"
5+
requestHeaderUseMockFlag = "true"
66
)
77

8-
8+
// MockHandle the handle define on mock module
99
type MockHandle func(ctx Context)
1010

11+
// Mock the define Mock module
1112
type Mock interface{
12-
// Register reg mock handler on route
13+
// Register register MockHandle on route
1314
Register(route string, handler MockHandle)
14-
// RegisterString reg mock return string on route
15+
// RegisterString register return mock string on route
1516
RegisterString(route string, resData string)
1617
// CheckNeedMock check is need do mock logic
1718
CheckNeedMock(Context) bool
1819
// Do do mock logic
1920
Do(Context)
2021
}
2122

23+
// StandardMock standard mock implement for Mock interface
2224
type StandardMock struct{
2325
routeMap map[string]MockHandle
2426
}
2527

28+
// NewStandardMock create new StandardMock
2629
func NewStandardMock() *StandardMock{
2730
return &StandardMock{routeMap:make(map[string]MockHandle)}
2831
}
2932

33+
// CheckNeedMock check is need do mock logic
3034
func (m *StandardMock) CheckNeedMock(ctx Context) bool{
31-
if ctx.Request().QueryHeader(requestHeader_UseMock_Key) == requestHeader_UseMock_Flag{
35+
if ctx.Request().QueryHeader(requestHeaderUseMockKey) == requestHeaderUseMockFlag{
3236
return true
3337
}
3438
return false
3539
}
3640

41+
// Do do mock logic
3742
func (m *StandardMock) Do(ctx Context){
3843
handler, exists:=m.routeMap[ctx.RouterNode().Node().fullPath]
3944
if exists{
4045
handler(ctx)
4146
}
4247
}
4348

49+
// Register register MockHandle on route
4450
func (m *StandardMock) Register(route string, handler MockHandle){
4551
m.routeMap[route] = handler
4652
}
4753

54+
// RegisterString register return mock string on route
4855
func (m *StandardMock) RegisterString(route string, resData string){
4956
m.routeMap[route] = func(ctx Context) {
5057
ctx.WriteString(resData)
51-
ctx.Response().SetHeader(requestHeader_UseMock_Key, requestHeader_UseMock_Flag)
58+
ctx.Response().SetHeader(requestHeaderUseMockKey, requestHeaderUseMockFlag)
5259
ctx.End()
5360
}
5461
}

0 commit comments

Comments
 (0)