bytedance / mockey

a simple and easy-to-use golang mock library
Apache License 2.0
556 stars 22 forks source link

泛型函数 mock 不支持 #47

Closed amosnothing closed 8 months ago

amosnothing commented 8 months ago
func sub1[T int | float64](a, b T) T { return a - b }

func sub3(a, b int) int { return a - b }

func TestName(t *testing.T) {
       // mock1
    mockey.Mock(sub1[int]).To(func(a, b int) int { return a * b }).Build()
    fmt.Println(sub1[int](5, 3)) // 预期返回 15 实际 2

        // mock2,  不要和上面的代码一起运行
    mockey.Mock(sub1[int]).To(func(a, b int) int { return 123 }).Build()
    fmt.Println(sub1[int](5, 3)) // 预期返回 123 实际 2

    mockey.Mock(sub3).To(func(a, b int) int { return 777 }).Build()
    fmt.Println(sub3(5, 3))  // 符合预期
}

mock1 和 mock2 的结果不符合预期

Sychorius commented 8 months ago

@amosnothing 升级到latest,然后这样mock

mockey.Mock(sub1[int], mockey.OptGeneric) // use option
mockey.MockGeneric(sub1[int]) // or use MockGeneric

可以参考这里

amosnothing commented 8 months ago

对我帮助很大,谢谢!