execute method

  1. @override
Future<void> execute({
  1. required CancelToken cancelToken,
  2. required TestReport report,
  3. required TestController tester,
})

Executes the step. This will looks for a function registered as variableName. The function must have a function signature of TestVariableFunction. The result of executing the function will be placed in the resultVariableName, or _functionResult if omitted.

Implementation

@override
Future<void> execute({
  required CancelToken cancelToken,
  required TestReport report,
  required TestController tester,
}) async {
  var resultVariableName =
      tester.resolveVariable(this.resultVariableName) ?? '_functionResult';
  var name = "$id('$variableName', '$resultVariableName')";

  log(
    name,
    tester: tester,
  );
  var fun = tester.resolveVariable('{{$variableName}}');

  if (fun is TestVariableFunction) {
    if (cancelToken.cancelled == true) {
      throw Exception('[CANCELLED]: the step has been cancelled.');
    }
    var result = await fun(
      tester,
      report,
    );

    tester.setTestVariable(
      value: result,
      variableName: resultVariableName,
    );
  } else {
    throw Exception('$id: failing due to no function');
  }
}