亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在傳遞正確的參數時為模擬的失敗斷言作證

在傳遞正確的參數時為模擬的失敗斷言作證

Go
富國滬深 2022-08-24 20:31:57
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)


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號