テンポラルには 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
ですか? また、どのように修正すればよいですか?