golang使用闭包降低测试代码行数
发布时间:2020-12-16 18:25:09 所属栏目:大数据 来源:网络整理
导读:转载请注明出处,原文链接http://tailnode.tk/2017/01/go... 有如下函数,简单来说就是有错误则直接返回,没错误则执行 f 函数。 func (t *transaction) Do(f func()) *transaction { if t.fail || t.rollback || t.finish { return t } f() return t} 函数
转载请注明出处,原文链接http://tailnode.tk/2017/01/go... 有如下函数,简单来说就是有错误则直接返回,没错误则执行 func (t *transaction) Do(f func()) *transaction { if t.fail || t.rollback || t.finish { return t } f() return t } 函数很简单,但如何测试呢,简单但丑陋的方法: func Test_func(t *testing.T) { isCalled := false f := func() { isCalled = true } trans := New() // do something trans.Do(f) // check if isCalled { // do something } } 在 func Test_func(t *testing.T) { isCalled1 := false isCalled2 := false isCalled3 := false f1 := func() { isCalled1 = true } f2 := func() { isCalled2 = true } f3 := func() { isCalled3 = true } trans := New() // do something trans.Do(f1) trans.Do(f2) trans.Do(f3) // check if isCalled1 { // do something } if isCalled2 { // do something } if isCalled3 { // do something } } 在上面代码中 func Test_func(t *testing.T) { genTestFunc := func() (func(),func() bool) { isCalled := false return func() { isCalled = true },func() bool { return isCalled } } f1,f1Called := genTestFunc() f2,f2Called := genTestFunc() f3,f3Called := genTestFunc() trans := New() // do something trans.Do(f1) trans.Do(f2) trans.Do(f3) // check if f1Called() { // do something } if f2Called() { // do something } if f3Called() { // do something } } 解释一下, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |