单元测试 – 如何在不使用依赖注入的情况下从另一个包模拟函数?
发布时间:2020-05-23 10:59:34 所属栏目:程序设计 来源:互联网
导读:有点像golang初学者,但之前我曾经使用过测试框架.如何在不注入依赖项的情况下嘲笑和伪造依赖方法返回的内容?我之所以不想使用依赖注入,是因为正在使用许多外部包方法,并且在构造函数中注入所有方法都很笨重. 我搜索了这个在线/ stackoverflow,解决方案是始终
|
有点像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"
}
谢谢! 你可以使用 conditional compilation with build tagsA / 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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
