gpt4 book ai didi

unit-testing - Uber Cadence 事件的单元测试上下文

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:56 24 4
gpt4 key购买 nike

我正在为使用 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注册。

关于unit-testing - Uber Cadence 事件的单元测试上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55840544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com