单元测试 – 如何在不使用依赖注入的情况下从另一个包模拟函数?
发布时间:2020-12-13 20:10:48 所属栏目:百科 来源:网络整理
导读:有点像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 tags
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |