有点像 golang 初学者,但我以前曾使用过测试框架。如何在不注入依赖项的情况下模拟和伪造依赖方法返回的内容?我不想使用依赖项注入的原因是因为正在使用许多外部包方法,并且在构造函数中注入所有方法很麻烦。
我已经在线/stackoverflow 上搜索过,解决方案是始终使用依赖项注入。有时这不是一个可行的选择。
这是我正在尝试以代码方式执行的操作:
b/b_test.go
package b
func TestResults(t *testing.T) {
t.Run("Test", func(t *testing.T) {
b := NewB()
// How do I mock out and fake a.DoSomething() to be
// "complete" instead of whats in the code right now?
result = b.Results()
assert.Equal(t, "complete", result)
}
}
b/b.go
package b
import "a"
type B struct {}
func NewB() B {
return &B{}
}
func (b B) Results() {
return a.DoSomething()
}
a/a.go
package a
func DoSomething() {
return "done"
}
Thanks!
您可以使用使用构建标签进行条件编译 https://golang.org/pkg/go/build/#hdr-Build_Constraints
a/a.go
// +build !mock
package a
func DoSomething() {
return "done"
}
a/a_mock.go
// +build mock
package a
func DoSomething() { // Insert fake implementation here
return "complete"
}
$ go test -tags mock
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)