Go Can';用于测试的t模拟结构
正在尝试模拟结构进行测试。但以下代码有一个错误:Go Can';用于测试的t模拟结构,go,Go,正在尝试模拟结构进行测试。但以下代码有一个错误: ./test.go:32:17: cannot use NewClass() (type *Class) as type mockClass in return argument: *Class does not implement mockClass (wrong type for Query method) have Query() *Iterator want Query() mockIterator
./test.go:32:17: cannot use NewClass() (type *Class) as type mockClass in return argument:
*Class does not implement mockClass (wrong type for Query method)
have Query() *Iterator
want Query() mockIterator
为什么我不能那样做
func NewClass() *Class {
return &Class{}
}
type Class struct{}
func (Class) Query() *Iterator {
return &Iterator{}
}
type Iterator struct{}
func (Iterator) Next() error {
return nil
}
type mockClass interface {
Query() mockIterator
}
type mockIterator interface {
Next() error
}
var newMock = func() mockClass {
return NewClass()
}
在测试中,我想分配给newMock
类似的内容:
newMock = funcr() mockClass {
return &fakeClass{}
}
结构类
和迭代器
不在我的控制之下。这些结构来自外部库
main.go
中的组件,这是连接/注入各种系统组件的好地方Query()*Iterator
和Query()mockIterator
不匹配,即使*Iterator
类型实现了mockIterator
接口也没关系,这两种方法根本不一样,因此Class
不实现mockClass
。