Рецепты
Override production-графа в тестах
Явные подмены в дочернем Scope без изменения контейнера production.
v0.1.0-dev.1Средний уровеньark_di
Override production-графа в тестах
Создавайте отдельный контейнер на тест или дочерний Scope от переиспользуемой production-конфигурации. Переопределите зависимость и любой родительский Singleton, который уже её получил.
dart
final testScope = production.createChild((binder) {
binder.bindInstance<Clock>(fakeClock, overrideParent: true);
binder.bindLazySingleton<Scheduler>(
(resolver) => Scheduler(resolver.get<Clock>()),
overrideParent: true,
);
});
Всегда закрывайте дочерний Scope в cleanup. Тестовая подмена не должна изменять таблицу production-регистраций.