登录
首页 >  Golang >  Go问答

GoLang 模拟中如何模拟错误返回值

来源:stackoverflow

时间:2024-03-10 09:54:27 414浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《GoLang 模拟中如何模拟错误返回值》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我正在使用 https://github.com/vektra/mockery 生成我的模拟文件。

假设我对函数 getqualifyinglistofbooks 有这个测试。 (模拟的)客户端方法 getlistofbooks 的签名是:

func getlistofbooks(ctx context.context, in *getlistofbooksrequest, opts ...grpc.calloption) (*getlistofbooksresponse, error)

目标:我想模拟 getlistofbooks 返回错误的情况,因此我编写了以下内容:

package whatever

import (
    "context"
    "testing"
    "github.com/stretchr/testify/assert"
    mock "github.com/stretchr/testify/mock"
    mockclients "github.com/myorg/myapp/internal/app/myservice/mocks"
)

func testgetqualifyinglistofbooks (t *testing.t) {
    client := &mockclients.bookclient{}
    client.on("getlistofbooks", mock.anything, mock.anything).return(nil, mock.anythingoftype("error"))
    realinstance.bookclient = client
    b, err := getqualifyinglistofbooks(realinstance, 10) // this calls `getlistofbooks`
    assert.nil(t, b)
    assert.notnil(t, err)
}

但它对此感到恐慌:

--- FAIL: TestGetQualifyingListOfBooks (0.00s)
panic: assert: arguments: Error(1) failed because object wasn't correct type: Error(1) [recovered]
    panic: assert: arguments: Error(1) failed because object wasn't correct type: Error(1)

如何模拟错误的返回值?


解决方案


更改此行

client.on("getlistofbooks", mock.anything, mock.anything).return(nil, mock.anythingoftype("error"))

到此

client.On("GetListOfBooks", mock.Anything, mock.Anything).Return(nil, errors.New("hello world"))

为我做的。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>