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

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


编写测试:


func TestFeatureStart(t *testing.T) {}

实现测试:


func (f *Feature) Start() error {

  cmd := exec.Command(f.Cmd)

  cmd.Start()

}

如何测试这个简单的位?我想我只想验证 exec 库是否正确。这就是我在 Java 中使用 Mockito 的方式。谁能帮我写这个测试?从我读过的内容来看,建议使用接口。


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


绝地无双
浏览 224回答 1
1回答

长风秋雁

您可以使用接口伪造整个交易,但您也可以使用可伪造的函数。在代码中:var cmdStart = (*exec.Cmd).Startfunc (f *Feature) Start() error {    cmd := exec.Command(f.Cmd)    return cmdStart(cmd)}在测试中:called := falsecmdStart = func(*exec.Cmd) error { called = true; return nil }f.Start()if !called {    t.Errorf("command didn't start")}另请参阅:Andrew Gerrand 的测试技术演讲。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go