我需要嘲笑exec.Command()。
我可以使用以下方法模拟它:
var rName string
var rArgs []string
mockExecCommand := func(name string, arg ...string) *exec.Cmd {
rName = name
rArgs = arg
return nil
}
但是,这在实际代码中不起作用,因为它抱怨 nil 指针,因为返回exec.Cmd调用Run().
我试图像这样模拟它:
type mock exec.Cmd
func (m *mock) Run() error {
return nil
}
var rName string
var rArgs []string
mockExecCommand := func(name string, arg ...string) *exec.Cmd {
rName = name
rArgs = arg
m := mock{}
return &m
}
但它抱怨:cannot use &m (value of type *mock) as *exec.Cmd value in return statementcompilerIncompatibleAssign.
有没有办法解决这个问题?有没有更好的模拟方法exec.Command()?
如果我返回一个“模拟”命令,模拟函数就可以工作,尽管我Run()也更喜欢控制这个函数:
var rName string
var rArgs []string
mockExecCommand := func(name string, arg ...string) *exec.Cmd {
rName = name
rArgs = arg
return exec.Command("echo")
}
肥皂起泡泡
慕标琳琳
繁星淼淼
相关分类