小编hot*_*now的帖子

我可以模拟一个带有需要使用的指针参数的函数吗

假设我们有一个库提供了一个 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)

go gomock

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

go ×1

gomock ×1