猿问

模拟结构参数

完全披露:这可能真的很愚蠢,但我是 Go 的新手,多年来没有使用过静态类型的语言。


我有一个看起来像这样的函数:


func Foo(bar *bar.BarStruct) {

  // do stuff with bar

}

在此示例中,bar 是第三方包,*bar.BarStruct 是指向结构的指针。


我想在删除 bar.BarStruct 结构时为 Foo 函数编写一个测试。我将如何剔除 *bar.BarStruct?


例如,在 JavaScript 中,我会做这样的事情


test('does a Foo', () => {

  const mockBarStruct = {

    someProp: 123

  }


  Foo(mockBarStruct)

  // rest of test

})

在 Go 中存根结构的等效方法是什么?


波斯汪
浏览 98回答 1
1回答

森栏

如果您让 Foo 采用接口而不是结构指针,则在测试中您可以传递实现该接口的模拟或假结构。有一些模拟库,但由于 Golang 不允许运行时类型编写,它们运行编译时并输出代码。希望有帮助!
随时随地看视频慕课网APP

相关分类

Go
我要回答