in lib/src/mock.dart [156:187]
dynamic noSuchMethod(Invocation invocation,
{Object? returnValue,
Object? returnValueForMissingStub = deferToDefaultResponse}) {
// noSuchMethod is that 'magic' that allows us to ignore implementing fields
// and methods and instead define them later at compile-time per instance.
invocation = _useMatchedInvocationIfSet(invocation);
if (_whenInProgress) {
_whenCall = _WhenCall(this, invocation);
return returnValue;
} else if (_verificationInProgress) {
_verifyCalls.add(_VerifyCall(this, invocation));
return returnValue;
} else if (_untilCalledInProgress) {
_untilCall = _UntilCall(this, invocation);
return returnValue;
} else {
_ReturnsCannedResponse defaultResponse;
if (returnValueForMissingStub == deferToDefaultResponse) {
defaultResponse = _defaultResponse;
} else {
defaultResponse = () =>
CallPair<Object?>.allInvocations((_) => returnValueForMissingStub);
}
_realCalls.add(RealCall(this, invocation));
_invocationStreamController.add(invocation);
var cannedResponse = _responses.lastWhere(
(cr) => cr.call.matches(invocation, {}),
orElse: defaultResponse);
var response = cannedResponse.response(invocation);
return response;
}
}