假设我们有一个库提供了一个 Double 函数来将整数加倍,我们使用指针 i 来获取结果值而不是通过返回:
package api
type Action interface {
Double(i *int) error
}
type NUM struct{}
func (n NUM) Double(i *int) error {
*i *= 2
return nil
}
Run Code Online (Sandbox Code Playgroud)
在我们的主函数中,我们使用这个库来完成我们的任务。像这样:
package app
import (
"fmt"
"github.com/hotsnow/api"
)
func main() {
j := job{a: &api.NUM{}}
d := j.task(3)
fmt.Println(3, d)
}
type job struct {
a api.Action
}
// double me
func (j job) task(i int) int {
j.a.Double(&i)
return i
}
Run Code Online (Sandbox Code Playgroud)
现在我们需要测试task()函数,我们怎样才能通过模拟Double函数获得指针返回呢?
这是测试:
package app
import (
"github.com/golang/mock/gomock" …Run Code Online (Sandbox Code Playgroud)