您的模拟可以使用interfaces来完成,例如:
main.go
package main
type TestInterface interface {
CreateResource(res1 string, res2 string) error
CreateSubresource (res1 string) error
}
func main() {
DoSomething(new(Test))
}
func DoSomething(t TestInterface) {
t.CreateResource()
}
main_test.go
package main
import "testing"
type TestMock struct {}
func (tm *TestMock) CreateResource(res1 string, res2 string) error {
return nil
}
func (tm *TestMock) CreateSubresource(res1 string) error {
return nil
}
func TestDoSomething(t *testing.T) {
err := DoSomething(new(TestMock))
//... do your assertions
}
为什么它会这样工作?
调用依赖于特定结构的函数不允许您为其注入替代方案,这就是需要创建使用接口的解决方案的原因。通过拥有一个接口,只需实现一个与该接口匹配的新结构,并将其作为依赖注入传递给将要测试的过程。
另外,检查一下:
我希望它可以帮助你。