runStep method

  1. @protected
Future<StepResult> runStep(
  1. String step,
  2. Iterable<String> multiLineStrings,
  3. dynamic table,
  4. TestDependencies dependencies,
)

Implementation

@protected
Future<StepResult> runStep(
  String step,
  Iterable<String> multiLineStrings,
  dynamic table,
  TestDependencies dependencies,
) async {
  final executable = _executableSteps!.firstWhereOrNull(
    (s) => s.expression.isMatch(step),
  );

  if (executable == null) {
    final message = 'Step definition not found for text: `$step`';
    throw GherkinStepNotDefinedException(message);
  }

  var parameters = _getStepParameters(
    step,
    multiLineStrings,
    table,
    executable,
  );

  await _onBeforeStepRun(
    dependencies.world,
    step,
    table,
    multiLineStrings,
  );

  final result = await executable.step.run(
    dependencies.world,
    reporter,
    configuration.defaultTimeout,
    parameters,
  );

  await _onAfterStepRun(
    step,
    result,
    dependencies,
  );

  if (result.result == StepExecutionResult.fail) {
    throw TestFailure('Step: $step \n\n${result.resultReason}');
  } else if (result is ErroredStepResult) {
    throw result.exception;
  }

  return result;
}