doudou5023 2016-09-06 07:42
浏览 55

如何在Golang中建立模拟类?

I'm trying to build mock class for unit test in golang; does anyone know how to do that? For example, in the following code slice, I'd like to print FakeMyClass.Object's return value.

package main

import (
    "fmt"
)

type MyClass struct {
}

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

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

type FakeMyClass struct {
    MyClass
}

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

func main() {
    mc := &FakeMyClass{}
    mc.PrintInfo()
}
  • 写回答

4条回答 默认 最新

  • dongxingji3882 2016-09-06 08:03
    关注

    I prefer to use 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
    ", 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
    ", fmc.Object())
    }
    
    func main() {
        mc := &FakeMyClass{}
        mc.On("Object").Return(1)
        mc.PrintInfo()
        //mc.AssertExpectations(t)
    }
    
    评论

报告相同问题?