模拟struct参数

问题描述 投票:0回答:1

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

go
1个回答
2
投票

如果你有Foo采用接口而不是结构指针,那么在测试中你可以传递一个实现该接口的模拟或假结构。

有一些模拟库但是因为Golang不允许运行时类型编写,所以它们运行编译时和输出代码。

希望有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.