0

テンポラルには golang SDK を使用しています。ワークフローのテストを書いていますLoadCreateWorkflow。アクティビティが 1 つあり、子ワークフローも開始します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ですか? また、どのように修正すればよいですか?

4

1 に答える 1

2

子ワークフローは、temporal に登録する必要がありますTestWorkflowEnvironment

s.env.RegisterWorkflow(LoadLifecycleWorkflow)

テスト ワークフロー環境は、テストを記述するためだけに使用される別の環境であるため、ワークフローがテストで呼び出すと予想されるすべての子ワークフローをこれに登録する必要があります。

于 2021-10-13T20:51:17.620 に答える