1 回答

TA貢獻1815條經驗 獲得超13個贊
無法模擬類型,您只能模擬接口的實現(xiàn)。在您的情況下,我假設您正在嘗試調用DescribeVolumes并在響應中獲取由您構造的值。
為此,您需要創(chuàng)建一個模擬
type MockEC2API struct {
? ? ec2iface.EC2API // embedding of the interface is needed to skip implementation of all methods
? ? DescribeVolumesMethod func(*ec2.DescribeVolumesInput) (*ec2.DescribeVolumesOutput, error)
}
func (m *MockEC2API) DescribeVolumes(in *ec2.DescribeVolumesInput) (*ec2.DescribeVolumesOutput, error) {
? ? if m.DescribeVolumesMethod != nil {
? ? ? ? return m.DescribeVolumesMethod(in)
? ? }
? ? return nil, nil // return any value you think is good for you
}
在測試中創(chuàng)建實例MockEC2API而不是真實實例ec2.EC2并為其提供將被調用的函數(shù)并返回您準備好的ec2.DescribeVolumesOutput結果
...
ec2 := &MockEC2API{
? ? DescribeVolumesMethod: func(*ec2.DescribeVolumesInput) (*ec2.DescribeVolumesOutput, error) {
? ? ? ? return &ec2.DescribeVolumesOutput{...your initialization...}, nil
? ? }
}
...
output, err := ec2.DescribeVolumes(in) // this output will be your prepared initialization
- 1 回答
- 0 關注
- 144 瀏覽
添加回答
舉報