你在学习golang相关的知识吗?本文《我可以模拟一个带有需要使用的指针参数的函数吗》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不
你在学习golang相关的知识吗?本文《我可以模拟一个带有需要使用的指针参数的函数吗》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!
问题内容假设我们有一个库提供了一个函数 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
}
在我们的主函数中,我们使用这个库来完成我们的任务。像这样:
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
}
现在我们需要测试task()函数,如何通过模拟double函数获得指针返回?
这是测试:
package app
import (
"github.com/Golang/mock/gomock"
"github.com/hotsnow/mocks"
"testing"
)
func TestReq(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
m := mocks.NewMockAction(ctrl)
m.EXPECT().Double(gomock.Any()).Return(nil)
j := job{a: m}
got := j.task(3)
if got != 6 {
t.Errorf("got = %#v; want 6", got)
}
}
这里的代码:https://github.com/hotsnow/mock.git(stackoverflow分支)
您可以使用 gomock setarg 函数来实现此目的
yourPackage.EXPECT().insert(&pointer).SetArg(0, newPointer)
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~
--结束END--
本文标题: 我可以模拟一个带有需要使用的指针参数的函数吗
本文链接: https://www.lsjlt.com/news/596727.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0