加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

单元测试 – 如何在不使用依赖注入的情况下从另一个包模拟函数?

发布时间: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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读