登录
首页 >  Golang >  Go问答

单元测试环境下的 Uber Cadence 活动

来源:stackoverflow

时间:2024-02-26 17:48:25 186浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《单元测试环境下的 Uber Cadence 活动》,涉及到,有需要的可以收藏一下

问题内容

我正在为 cadence 活动函数编写一个单元测试,该函数使用 uuid 从联系人服务中检索联系人。我想知道我应该将什么上下文传递给节奏活动。

activity.register(getcontactactivityfunc)

func getcontactactivityfunc(ctx context.context, input contactbbinput) (contactbboutput, error) {
   ...
}

这是测试功能。

func testgetcontactactivityfunc(t *testing.t) {
    mockcsinterface := &mocks.interface{}
    csclient := outbound.newcontactserviceclient(mockcsinterface)
    ctx := context.background()
    ctx = context.withvalue(ctx, outbound.contactserviceclientkey, csclient)
    contactuuid := contact.uuid("917801ab-36ff-4eea-8352-d6eafedb5106")
    bbinput := contactbbinput{
        contactid: &contactuuid,
    }
    bbout, err := getcontactactivityfunc(ctx, bbinput)
    assert.noerror(t, err)
    assert.notnil(t, bbout.contactobj)
}

我收到的错误消息:

--- FAIL: TestGetContactActivityFunc (0.00s)
panic: getActivityEnv: Not an activity context [recovered]
    panic: getActivityEnv: Not an activity context

解决方案


使用TestActivityEnvironment

import (
    "go.uber.org/cadence/testsuite"
    "go.uber.org/cadence/worker" 
)

s := &testsuite.WorkflowTestSuite{} 
env := s.NewTestActivityEnvironment() 
// This is needed if ctx contains some external dependencies like
// database client
env.SetWorkerOptions(worker.Options{    
  BackgroundActivityContext: ctx, 
})
contact, err := env.ExecuteActivity(GetContactActivityFunc)

确保该活动是通过 activity.register 注册的。

终于介绍完啦!小伙伴们,这篇关于《单元测试环境下的 Uber Cadence 活动》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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