Я довольно новичок. Я пытаюсь смоделировать один метод struct
, используя testify
, но я не знаю, как это сделать.
Вот код:
type HelloWorlder interface {
SayHello() string
GetName() string
}
type HelloWorld struct{}
func (hw *HelloWorld) SayHello() string {
return fmt.Sprintf("Hello World from %s!", hw.GetName())
}
func (hw *HelloWorld) GetName() string {
return "se7entyse7en"
}
и вот тест:
type MockHelloWorld struct {
mock.Mock
HelloWorld
}
func (m *MockHelloWorld) GetName() string {
args := m.Called()
return args.String(0)
}
type SomeTestSuite struct {
suite.Suite
}
func (s *SomeTestSuite) TestMocking() {
mhw := new(MockHelloWorld)
mhw.On("GetName").Return("foo bar")
fmt.Println(mhw.SayHello())
}
Идея состоит в том, чтобы использовать только метод GetName
, чтобы он печатал Hello World from foo bar!
. Это возможно?
Для тех, кто знаком с Python, то, что я пытаюсь достичь, похоже на то, что класс unittest.Mock
разрешает через аргумент wraps
.
UPDATE
Из testify
импортированы следующие пакеты:
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/suite"