【问题标题】:temporal error when writing test for workflow that calls child workflow: "unable to find workflow type"为调用子工作流的工作流编写测试时出现时间错误:“找不到工作流类型”
【发布时间】:2021-12-02 07:51:10
【问题描述】:

我正在将 golang SDK 用于时间。我正在为我的工作流程LoadCreateWorkflow 编写测试。它有一个活动,还启动了一个子工作流LoadLifecycleWorkflow

在为它编写单元测试时,我模拟了活动和子工作流LoadLifecycleWorkflow

    s.env.OnActivity(CreateLoadActivity, mock.Anything, mock.Anything).Return(nil, nil).Once()
    s.env.OnWorkflow(LoadLifecycleWorkflow, mock.Anything).Return(nil)
    s.env.ExecuteWorkflow(LoadCreateWorkflow, wfParams)

(这里 s.env 是单元测试的TestWorkflowEnvironment):

import (
    ...
    "go.temporal.io/sdk/testsuite"
)

type UnitTestSuite struct {
    suite.Suite
    testsuite.WorkflowTestSuite

    env *testsuite.TestWorkflowEnvironment
}

func (s *UnitTestSuite) SetupTest() {
    s.env = s.NewTestWorkflowEnvironment()
}

运行测试时出现错误:panic: unable to find workflow type: LoadLifecycleWorkflow. Supported types: [LoadCreateWorkflow]

在我的工作流模块的 init 函数中,我同时注册了它和子工作流:

worker.RegisterWorkflow(LoadCreateWorkflow)
worker.RegisterActivity(CreateLoadActivity)
worker.RegisterWorkflow(LoadLifecycleWorkflow)

为什么我收到我的LoadLifecycleWorkflow 未注册的错误,我该如何解决?

【问题讨论】:

    标签: go testing temporal temporal-workflow


    【解决方案1】:

    子工作流必须注册到临时TestWorkflowEnvironment

    s.env.RegisterWorkflow(LoadLifecycleWorkflow)

    测试工作流环境是一个不同的环境,仅用于编写测试,因此您希望工作流在测试中调用的任何子工作流都应注册到该环境。

    【讨论】:

      猜你喜欢
      • 2022-12-21
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 2020-07-24
      • 1970-01-01
      • 2022-12-31
      • 2020-11-08
      相关资源
      最近更新 更多