В моем коде флаттера у меня есть логика c, которая делает это:
final jsonString = await rootBundle.loadString('AssetManifest.json');
И у меня есть тесты, которые я хочу вернуть подделкой AssetManifest.json
, когда эта строка достигнута.
Чтобы сделать это, я делаю это в тесте:
ServicesBinding.instance.defaultBinaryMessenger
.setMockMessageHandler('flutter/assets', (message) {
final Uint8List encoded =
utf8.encoder.convert('{"Foo.ttf":["Foo.ttf"]}');
return Future.value(encoded.buffer.asByteData());
});
Странно то, что работает , но любые тесты, которые запускаются после этого зависание (все они застряли в коде, когда он достигает строки await rootBundle.loadString('AssetManifest.json')
.
Я пытался добавить
ServicesBinding.instance.defaultBinaryMessenger
.setMockMessageHandler('flutter/assets', null);
Но, похоже, это не совсем "очищает" по сути, если я запускаю вышеуказанную строку в моем setUp
, первый тест для запуска зависает.
Итак, я ошибаюсь в поведении? Или нет? чистить его правильно?