Golang初学者在这里。我正在尝试为我的结构编写测试,最终模拟统计接口。就测试而言,我的代码的相关部分如下所示。// Test codetype MockStats struct { mock.Mock}func (m *MockStats) Mean(input []float64) (mean float64, err error) { args := m.Called(input) return (args.Get(0)).(float64), args.Error(1)}func TestCalculateWhenErrorCalculatingMean(t *testing.T) { m := new(MockStats) data := []float64{0.0, 0.1} r := ResponseAggregate{ExecutionTimes: data} // Expectations m.On("Mean", []float64{0.0, 0.1}).Return(float64(0.1), errors.New("Oops!")).Once() m.AssertExpectations(t) // Function call err := r.Calculate(m) // Data assertion assert.NotNil(t, err) if assert.Error(t, err) { assert.Equal(t, errors.New("error calculating average. Oops!"), err) }}我的主叫代码看起来像type ResponseAggregate struct { ExecutionTimes []float64 AverageTime float64}func (response *ResponseAggregate) Calculate(stats Stats) error { average, err := stats.Mean(response.ExecutionTimes) if err != nil { return fmt.Errorf("error calculating average. %v", err) } return nil当我运行测试时,我收到错误 The code you are testing needs to make 1 more call(s).你能帮我解决我在这里错过的东西吗?谢谢。顺便说一句,使用 Go 1.16.3
1 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
您实际上是在拨打电话之前打电话。因此,您尝试在调用该方法之前检查模拟的方法调用。m.AssertExpectation(t)
r.Calculate(m)
只需将断言放在后面,它应该没问题。r.Calculate(m)
- 1 回答
- 0 关注
- 68 浏览
添加回答
举报
0/150
提交
取消