Пример #1
0
        /// <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;
 }