我正在使用https://github.com/stretchr/testify
go库来模拟类。我想为aws sdk包模拟一个类的字段:github.com/aws/aws-sdk-go-v2/service/apigatewaymanagementapi
.
我的密码是:
func publishData(ctx context.Context, api *apigatewaymanagementapi.Client) {
...
api.PostToConnection(...)
}
我需要模拟PostToConnection
方法。我设置模拟如下:
type MockApi struct {
apigatewaymanagementapi.Client
mock.Mock
}
func (m *MockApi) PostToConnection() (*apigatewaymanagementapi.PostToConnectionOutput, error) {
m.Called()
return nil, nil
}
在我的测试案例中,
api := MockApi{}
api.On("PostToConnection").Return(nil, nil)
模拟不起作用,代码仍然使用真正的Client
。我认为问题是模拟只模拟根级别的方法,而不是Client.PostToConnection
方法。
如何在Client
下模拟该方法?
1条答案
按热度按时间x8diyxa71#
用你自己的接口替换 * apigatewaymanagementapi.client,对于这个接口,在测试中,你可以自己写一个实现(stub)或者使用一个库来生成它(比如https://github.com/golang/mock)。
示例: