go语言测试框架Convey+Monkey的使用

go语言有很多的测试框架,但是个人感觉还是Convey+Monkey的使用比较简单方便,Convey作为外部框架,monkey可以为函数和方法进行打桩。

一个简单的示例来说明如何对函数进行打桩

示例:

func Readfile(filename string, m interface{}) error{
	_,err := ioutil.ReadFile(filename)
	if err != nil {
		fmt.Println("readfile:[%s] error:[%s]", filename, err.Error())
        return err
	}
	return nil
}

Readfile函数中调用了ioutil.ReadFile,假设要对该函数写UT测试用例的话,不可避免就要对其进行打桩,因为系统不存在要读取的filename文件,自然读取不到数据。

func TestReadfile(t *testing.T){
    Convey("Teststring2json",t, func() {
		filename := ""
		m := []interface{}{}
		pathes := applyfunc(ioutil.ReadFile, func(_ string) ([]byte, error) {
			return []byte{},nil
		})
		defer pathes.Reset()
    	err := Readfile(filename , m)
    	So(err,shouldBeNil)
	})
}

因为filename不存在,不可避免的ioutil.ReadFile(filename)返回的err != nil,那么return 的必然是err的错误信息,打桩之后,给他返回来的就是nil,那么执行的就是return nil

其实,打桩的目的就是不关注需要打桩函数的具体执行调用过程,将全部的精力放在自己当前所写的函数之上。

你可能感兴趣的:(GO)