Почему я получаю «MissingStubError», даже если функция заглушена?
У меня есть эта функция:
Future<void> run(
void Function() onStart,
void Function() newCallback,
void Function() updateCallback,
void Function() onFinish,
) {
return Future(() async {
// heavy work
});
}
Я пытаюсь издеваться над этим:
when(() => module.run(
() {},
() {},
() {},
() {},
)).thenAnswer(
(invocation) => Future(() {}),
);
Тест флаттера возвращает:
MissingStubError: 'run'
No stub was found which matches the arguments of this method call:
run(Closure: () => void, Closure: () => void, Closure: () => void, Closure: () => void)
Add a stub for this method using Mocktail's 'when' API.
package:mocktail/src/mocktail.dart 30:5 _exceptionResponse.<fn>
package:mocktail/src/mocktail.dart 131:37 Mock.noSuchMethod
package:app/module.dart 94:16 MockApiBindings.scan
package:app/model.dart 165:20 Model.startWork
test/model_test.dart 168:9 main.<fn>
===== asynchronous gap ===========================
dart:async _completeOnAsyncError
test/model_test.dart 168:9 main.<fn>
Почему это не работает? Разве все пустые замыкания не возвращают void?
1 ответ
Да...
when(() => module.run(
any(),
any(),
any(),
any(),
)).thenAnswer(
(invocation) => Future(() {}),
);
Это было неожиданно, но логично...
Если кто-нибудь найдет другое решение, пожалуйста, дайте мне знать (: