gpt4 book ai didi

go - 如何验证是否调用了特定函数

转载 作者:IT王子 更新时间:2023-10-29 01:09:04 28 4
gpt4 key购买 nike

我正在尝试用 Go 编写 TDD。然而,我坚持以下几点。

要写的测试:

func TestFeatureStart(t *testing.T) {}

要测试的实现:

func (f *Feature) Start() error {
cmd := exec.Command(f.Cmd)
cmd.Start()
}

如何测试这个简单的位?我想我只想验证 exec 库是否被正确调用。这就是我使用 Mockito 在 Java 中执行此操作的方式。谁能帮我写这个测试?根据我的阅读,建议使用接口(interface)。

Feature-struct 只包含一个字符串 Cmd。

最佳答案

您可以伪造整个接口(interface)的处理,但您也可以使用可伪造的函数。在代码中:

var cmdStart = (*exec.Cmd).Start
func (f *Feature) Start() error {
cmd := exec.Command(f.Cmd)
return cmdStart(cmd)
}

在测试中:

called := false
cmdStart = func(*exec.Cmd) error { called = true; return nil }
f.Start()
if !called {
t.Errorf("command didn't start")
}

另请参阅:Andrew Gerrand 的 Testing Techniques talk .

关于go - 如何验证是否调用了特定函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32425558/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com