/// <summary> /// Runs test flow. /// </summary> /// <returns>Execution context of the run flow.</returns> public async Task <TestFlowExecutionContext <TState> > RunAsync() { var context = new TestFlowExecutionContext <TState>(host); foreach (var step in steps) { var stepResult = step.Execute(context); if (!(stepResult is CommandStepResult commandResult)) { continue; } var(command, integrationEvent) = commandResult; var result = await host.SendAsync(command); context = context.Update(command, integrationEvent, result); if (!result.Success) { return(context); } } return(context); }
/// <summary> /// Deconstructs context. /// </summary> /// <param name="executionResult">Last execution result.</param> /// <param name="executionContext">Current execution context.</param> public void Deconstruct(out IExecutionResult executionResult, out TestFlowExecutionContext executionContext) { executionResult = ExecutionResults.LastOrDefault(); executionContext = this; }