模拟结构参数

时间:2018-09-07 03:18:14

标签: go

完全公开:这可能真是愚蠢,但是我是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中存根结构的等效方法是什么?

1 个答案:

答案 0 :(得分:2)

如果让Foo接受接口而不是结构指针,则在测试中,您可以传递实现该接口的模拟或伪造结构。

有一些模拟库,但是由于Golang不允许编写运行时类型,因此它们会运行编译时并输出代码。

希望有帮助!