示例#1
0
        private async Task <CompositeStepContext> InvokeStepMethodAsync()
        {
            CompositeStepContext result;
            var ctx = AsyncStepSynchronizationContext.InstallNew();

            try
            {
                result = await _stepInvocation.Invoke(Context, PrepareParameters());

                VerifyParameters();
            }
            catch (Exception e)
            {
                if (ScenarioExecutionException.TryWrap(e, out var wrapped))
                {
                    throw wrapped;
                }
                throw;
            }
            finally
            {
                UpdateNameDetails();
                ctx.RestoreOriginal();
                await ctx.WaitForTasksAsync();
            }
            return(result);
        }
示例#2
0
        private async Task RunStepAsync()
        {
            IStepResultDescriptor result;
            var ctx = AsyncStepSynchronizationContext.InstallNew();

            try
            {
                var args = PrepareArguments();
                result = await _invocation.Invoke(Context, args);

                VerifyArguments();
            }
            catch (Exception e)
            {
                if (ScenarioExecutionException.TryWrap(e, out var wrapped))
                {
                    throw wrapped;
                }
                throw;
            }
            finally
            {
                UpdateNameDetails();
                ctx.RestoreOriginal();
                await ctx.WaitForTasksAsync();
            }

            await InvokeSubStepsAsync(result);
        }
示例#3
0
            public async Task ExecuteAsync()
            {
                try
                {
                    var task = _enumerator.MoveNext()
                        ? _enumerator.Current.Invoke(_target, ExecuteAsync)
                        : _targetInvocation.Invoke();

                    await ScenarioExecutionFlow.WrapScenarioExceptions(task);
                }
                catch (Exception ex)
                {
                    if (ScenarioExecutionException.TryWrap(ex, out var wrapped))
                    {
                        throw wrapped;
                    }
                    throw;
                }
            }