为调用子工作流程的工作流程编写测试时出现临时错误:“无法找到工作流程类型”

Pat*_*gan 2 testing go temporal-workflow

我正在使用 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)
Run Code Online (Sandbox Code Playgroud)

(这里 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()
}
Run Code Online (Sandbox Code Playgroud)

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

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

worker.RegisterWorkflow(LoadCreateWorkflow)
worker.RegisterActivity(CreateLoadActivity)
worker.RegisterWorkflow(LoadLifecycleWorkflow)
Run Code Online (Sandbox Code Playgroud)

为什么我会收到“我的未注册”错误LoadLifecycleWorkflow?如何解决?

Pat*_*gan 5

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

s.env.RegisterWorkflow(LoadLifecycleWorkflow)

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