У меня есть родительский рабочий процесс (ParentWorkflow), вызывающий дочерний рабочий процесс (ChildWorkflow), и я пытаюсь проверить вызов.Удостоверение блочных рабочих процессов Amazon SWF
Родительский код выглядит примерно так:
public class ParentWorkflow {
private final ChildWorkflowClientFactory childWorkflowClientFactory =
new ChildWorkflowClientFactoryImpl();
public void runWorkflow() {
new TryCatch() {
@Override
protected void doTry() throws Throwable {
Promise<Void> workflowFinished = childWorkflowClient.childWorkflow(x);
...
}
...
}
}
Я хочу, чтобы дразнить вне childWorkflowClient.childWorkflow(x)
вызова, однако, когда я подключение модульного теста я, кажется, не имеет возможность впрыснуть клиент завод, код модульного тестирования выглядит следующим образом:
@Rule
public WorkflowTest workflowTest = new WorkflowTest();
@Mock
private Activities mockActivities;
private ParentWorkflowClientFactory workflowFactory
= new ParentWorkflowClientFactoryImpl();
@Before
public void setUp() throws Exception {
// set up mocks
initMocks(this);
workflowTest.addActivitiesImplementation(mockActivities);
workflowTest.addWorkflowImplementationType(ParentWorkflowImpl.class);
workflowTest.addWorkflowImplementationType(ChildWorkflowImpl.class);
Я, кажется, не быть в состоянии передать что-нибудь в классы реализации рабочего процесса, есть другой способ, я могу дразнить ребенка рабочий процесс вне дома?
Спасибо за ответ ! Это очень близко к работе, но код, который я хочу протестировать в родительском рабочем потоке, окружен блоком TryCatch, и он, похоже, не выполняется. Есть идеи, как запускать код там? Полагаю, я мог бы просто вывести его в отдельный блок кода и протестировать его, но было бы неплохо, если бы я смог проверить его в исходном контексте напрямую. – Allan5
Лучший способ узнать, где асинхронный код «застрял», - использовать метод AsyncScope.getAsynchronousThreadDumpAsString. Он покажет «асинхронный дамп стека», который отображает «асинхронную трассировку стека» для каждой выдающейся задачи. Не смотря на код, трудно дать более конкретный ответ. –
BTW uf вы используете WorkflowTest и задаете тайм-аут для теста, тогда «асинхронный дамп потока» испускается автоматически. –