Golang单元测试-简单示例
one.go
package unittest
func AddOne(t int32) int32 {
return t + 1
}
func MinusOne(t int32) int32 {
return t - 1
}
func MultiAddOne(t int32) int32 {
t = MinusOne(t)
t = AddOne(t)
t = AddOne(t)
return t
}
one_test.go
package unittest
import (
"testing"
. "github.com/agiledragon/gomonkey"
. "github.com/smartystreets/goconvey/convey"
)
func TestMultiAddOne(t *testing.T) {
Convey("TestApplyFunc", t, func() {
Convey("input and output param", func() {
patches := ApplyFunc(AddOne, func(t1 int32) int32 {
return 5
}) //对函数AddOne打桩
defer patches.Reset()
patches.ApplyFunc(MinusOne, func(t1 int32) int32 {
return -2
}) //对函数MinusOne打桩
result := MultiAddOne(2) //看好了我调用的是MultiAddOne函数,而MultiAddOne函数内部调用了AddOne和MinusOne。
So(result, ShouldEqual, 3)
})
})
}