# #go #testing #temporal #temporal-workflow
Вопрос:
Я использую SDK golang для временного. Я пишу тест для своего рабочего 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]
В функции инициализации моего модуля рабочего процесса я регистрирую как его, так и дочерний рабочий процесс:
worker.RegisterWorkflow(LoadCreateWorkflow)
worker.RegisterActivity(CreateLoadActivity)
worker.RegisterWorkflow(LoadLifecycleWorkflow)
Почему я получаю сообщение об ошибке, что мой LoadLifecycleWorkflow
не зарегистрирован, и как это исправить?
Ответ №1:
Дочерний рабочий процесс должен быть зарегистрирован во временной TestWorkflowEnvironment
:
s.env.RegisterWorkflow(LoadLifecycleWorkflow)
Среда рабочего процесса тестирования-это другая среда, которая используется только для написания тестов, поэтому все дочерние рабочие процессы, которые, как вы ожидаете, ваш рабочий процесс вызовет в тесте, должны быть зарегистрированы в этой среде.