假设我有两个包,并且(因此,、 、 和 .) 取决于。在 中,我想使用一些在 中定义的伪造类型。但是由于不允许文件导出类型,因此我将它们移动到 测试包中,即,两者都依赖于。foobarfoo.gofoo_test.gobar.gobar_test.gobarfoobar_test.gofoo_test.go*_test.gofoofootestfoobar
假设有一些这样的接口:foo.go
type A interface {
AFunc() err
}
type B interface {
BFunc() (A, error)
}
和 中,我想用 fakes 实现这些接口:footest.go
type FakeA struct {}
type FakeB struct {}
func (fa *FakeA) AFunc() error {
// this does something
}
func (fb *FakeB) BFunc() (A, error) {
// this does something and returns an instance of A
}
这不起作用,因为它会创建循环依赖项。 依赖,但也需要依靠才能引用。foofootestfootestfooA
我是否错过了某种最佳实践,使我能够避免此问题?我的印象是,当测试文件需要在其他包中使用伪造的类型时,创建测试包(如 )是标准做法,但是如果有更好的方法,我希望得到纠正。footest