gpt4 book ai didi

unit-testing - 如何在 golang 中构建模拟类?

转载 作者:IT王子 更新时间:2023-10-29 02:13:25 29 4
gpt4 key购买 nike

我正在尝试为 golang 中的单元测试构建模拟类;有谁知道这是怎么做到的吗?例如,在下面的代码片段中,我想打印 FakeMyClass.Object 的返回值。

package main

import (
"fmt"
)

type MyClass struct {
}

func (*MyClass) Object() (int) {
return 0
}

func (mc *MyClass) PrintInfo() {
fmt.Printf("%v\n", mc.Object())
}

type FakeMyClass struct {
MyClass
}

func (*FakeMyClass) Object() (int) {
return 1
}

func main() {
mc := &FakeMyClass{}
mc.PrintInfo()
}

最佳答案

我更喜欢使用 github.com/stretchr/testify/tree/master/mock

package main

import (
"fmt"
"github.com/stretchr/testify/mock"
)

type MyClass struct {
}

func (*MyClass) Object() (int) {
return 0
}

func (mc *MyClass) PrintInfo() {
fmt.Printf("%v\n", mc.Object())
}

type FakeMyClass struct {
mock.Mock
}

func (fmc *FakeMyClass) Object() (int) {
args := fmc.Called()
return args.Int(0)
}
func (fmc *FakeMyClass) PrintInfo() {
fmt.Printf("%v\n", fmc.Object())
}

func main() {
mc := &FakeMyClass{}
mc.On("Object").Return(1)
mc.PrintInfo()
//mc.AssertExpectations(t)
}

关于unit-testing - 如何在 golang 中构建模拟类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39343282/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com