模拟函数的返回值 [closed]

mock a function's return value [closed]

提问人:Alvin Shaita 提问时间:11/18/2023 最后编辑:Ken WhiteAlvin Shaita 更新时间:11/18/2023 访问量:39

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

2天前关闭。

我正在尝试使用 testify 模拟简单函数的返回值

package main

func One(str string) string {
    return str
}

func Two(str string) string {
    oneRes := One(str)
    return str+oneRres
}

我正在尝试让函数返回字符串,即使我将字符串传递给函数OneonetwoTwo

我试过以这种方式嘲笑该值

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

type MockOne struct {
    mock.Mock
}

// Mocking the One function
func (m *MockOne) One() string {
    args := m.Called()
    return args.String(0)
}

func TestTwo(t *testing.T) {
    // Create an instance of the mocked object
    mockedOne := new(MockOne)

    // Set expectations for the mocked function
    mockedOne.On("One").Return("one") // Define the expected return value

    twoRes := Two("two")
    fmt.Println("Return value:", twoRes)

    assert.Equal(t, Two("two"), "twoone", "result should equal twoone")
}

我不确定我是否在做正确的事情,或者是否有可能,但是当我尝试模拟 的返回值时,它不会返回预期值。 输出是静止的,而不是静止的Onetwotwotwoone

测试 作证

评论

1赞 Volker 11/18/2023
“我正在尝试让函数 One 返回字符串 one,即使我将字符串 2 传递给函数 Two” 由于显而易见的原因,您不能这样做。忘掉这个嘲讽的东西吧,它在 Go 中并不像你可能已经习惯的那样好用。编写适当的测试。

答: 暂无答案