/// <summary> /// Adds steps specified by <paramref name="steps"/> parameter to the composite step.<br/> /// The step name is determined from lambda parameter name reflecting action type keyword, corresponding action name and passed list of parameters to called method.<br/> /// If scenario is defined with context, the context instance is provided with lambda parameter.<br/> /// Example usage: /// <code> /// AddSteps( /// _ => Given_numbers(5, 8), /// _ => When_I_add_them(), /// _ => I_should_receive_number(13)) /// </code> /// Expected step signature: <code>void Given_numbers(params int[] numbers) { /* ... */ }</code> /// </summary> /// <param name="builder">Builder.</param> /// <param name="steps">Steps to add, like: <c>AddSteps(_ => Given_numbers(5, 8), _ => When_I_add_them(), _ => I_should_receive_number(13))</c></param> public static ICompositeStepBuilder <TContext> AddSteps <TContext>(this ICompositeStepBuilder <TContext> builder, params Expression <Action <TContext> >[] steps) { var coreBuilder = builder.Integrate(); var compiler = new ExtendedStepCompiler <TContext>(coreBuilder.Configuration); coreBuilder.AddSteps(steps.Select(compiler.ToStep)); return(builder); }
/// <summary> /// Adds asynchronous steps specified by <paramref name="steps"/> parameter to the scenario.<br/> /// The step name is determined from lambda parameter name reflecting action type keyword, corresponding action name and passed list of parameters to called method.<br/> /// If scenario is defined with context, the context instance is provided with lambda parameter.<br/> /// Example usage: /// <code> /// AddAsyncSteps( /// _ => Given_numbers(5, 8), /// _ => When_I_add_them(), /// _ => I_should_receive_number(13)) /// </code> /// Expected step signature: <code>Task Given_numbers(params int[] numbers) { /* ... */ }</code> /// </summary> /// <param name="builder">Builder.</param> /// <param name="steps">Steps to add, like: <c>AddAsyncSteps(_ => Given_numbers(5, 8), _ => When_I_add_them(), _ => I_should_receive_number(13))</c></param> public static IScenarioRunner <TContext> AddAsyncSteps <TContext>(this IScenarioBuilder <TContext> builder, params Expression <Func <TContext, Task> >[] steps) { var integration = builder.Integrate(); var compiler = new ExtendedStepCompiler <TContext>(integration.Core.Configuration); integration.Core.AddSteps(steps.Select(compiler.ToStep)); return(integration); }