goconvey

从博主轩脉刃那里学到了一手goconvey,稍微记录一下,主要还是对方对于测试的理解和使用。

测试要重cover而不是count,比如controller可以直接测试model和view,为什么要分开写。

我个人习惯mock,但是博主反而提不要多mock,的确,我主要是对docker这块不熟悉,其实现在docker完美解决了之前了需要对数据库层面的测试问题,完全可以开一个docker跑你的测试。

对于goconvey,就分享一下定制化断言。

测试的主要函数原型

func So(actual interface{}, assert assertion, expected ...interface{})
type assertion func(actual interface{}, expected ...interface{}) string

这里要注意不要定义success,否则就会出错。

扫描二维码关注公众号,回复: 10918558 查看本文章
const (
   success                = ""
   needExactValues        = "This assertion requires exactly %d comparison values (you provided %d)."
   needNonEmptyCollection = "This assertion requires at least 1 comparison value (you provided 0)."
)

定制

func ShouldCase(actual interface{}, expected ...interface{}) string {
    if actual == expected[0] {
        return ""
    } else {
        return "n"
    }
}

func TestAdd(t *testing.T) {
    Convey("相加", t, func() {
        So(Add(1, 3), ShouldCase, 4)
    })
}

当然大部分都是现成的不太需要我们定义,这就和junit差不多,还可以web界面。

goconvey -port 8080

这样我们就可以打开web,locahost:8080进行操作

end

猜你喜欢

转载自www.cnblogs.com/CherryTab/p/12726283.html