1 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
無法模擬類型,您只能模擬接口的實(shí)現(xiàn)。在您的情況下,我假設(shè)您正在嘗試調(diào)用DescribeVolumes并在響應(yīng)中獲取由您構(gòu)造的值。
為此,您需要?jiǎng)?chuàng)建一個(gè)模擬
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
}
在測(cè)試中創(chuàng)建實(shí)例MockEC2API而不是真實(shí)實(shí)例ec2.EC2并為其提供將被調(diào)用的函數(shù)并返回您準(zhǔn)備好的ec2.DescribeVolumesOutput結(jié)果
...
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 關(guān)注
- 155 瀏覽
添加回答
舉報(bào)