当前位置: 首页 > 知识库问答 >
问题:

优步Cadence活动的单元测试上下文

薛弘壮
2023-03-14

我正在为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

共有1个答案

胡云瀚
2023-03-14

使用测试活动环境:

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)

确保通过活动注册活动。注册

 类似资料:
  • Swift下的单元测试 主要是由于苹果官方框架的测试方法及断言不明确,可读性不好,难以分辨,交接项目需要花费的时间很多,所以建议采用三方测试框架 方案一: Quick + Nimble 方案二: Sleipnir 已经停更 用到的类库有: Quick Nimble Dobby、MockFive、SwiftMock Quick Quick 是一个建立在XCTest 上,为Swift 和Objecti

  • 对于复杂的批处理任务,测试用例在点对点的测试方法中可能变成难于管理的。这些情况下,凭你们自己的力量用测试用例测试各个步骤更加有用。AbstractJobTests类包含一个方法launchStep需要一个步骤名称和运行特定的步骤。这个方法允许更有针对性的测试通过这个步骤允许测试设置数据并验证其结果。 JobExecution jobExecution = jobLauncherTestUtils.

  • 我有一个storm拓扑,它有一个连接到kafka队列的spout,并将元组转发到我的bolt进行处理。我只想对bolt进行单元测试,而不是中的整个片段。然而,我还想在一个storm拓扑实例中测试bolt,而不仅仅是它的纯功能。原因是bolt实际上将处理后的数据发送到一个cassandra数据库。 所以我实现这一点的一种方法是制作一个测试喷口,将其连接到bolt,并通过测试喷口将测试元组发送到bol

  • 我正在做一个使用优步Cadence Java客户端的项目。如何从代码中获取注册活动的列表? 谢谢你。

  • 我在找一个微服务协调器,遇到了优步卡登斯。我已经阅读了文档,并在开发设置中使用了它。 我对生产场景有几个问题: > 是否建议为工作流及其使用的不同活动设置一个专用的任务列表?或者,我们应该为所有人使用一个任务列表?这个决定会影响可扩展性或性能吗? 当我们添加新的工作线程计算机时,在同一台计算机中为不同的活动/工作流运行所有工作线程是否是一种常见的做法?例: 或者我们应该在专用机器中运行每个活动/工

  • 我有一些代码,它使用的是class的方法,它是异步的。另外,我正在使用微软的单元测试应用程序项目来测试应用程序。 问题是测试框架并没有等待异步代码的运行结束,所以我无法检查它的结果。 如何使用Unit Test App项目测试异步代码?我没有使用异步/等待修改器。