diff --git a/lib/resolvers/resolving_context.dart b/lib/resolvers/resolving_context.dart index c5535a2..3680221 100644 --- a/lib/resolvers/resolving_context.dart +++ b/lib/resolvers/resolving_context.dart @@ -61,8 +61,9 @@ class ResolvingContext extends Resolver { * Создать фабричный resolver с 1 зависимостью от контейнера */ ResolvingContext toFactory1(T Function(T1) factory) { - // TODO: implement toFactory1 - throw UnimplementedError(); + Resolver resolver = + FactoryResolver(() => factory(_container.resolve())); + return toResolver(resolver); } /** diff --git a/test/di_container_test.dart b/test/di_container_test.dart index 3b54afc..9231982 100644 --- a/test/di_container_test.dart +++ b/test/di_container_test.dart @@ -140,6 +140,15 @@ void main() { expect(container.resolve(), b); }); + + test("Bind to the factory resolves with value", () { + final container = DiContainer(); + final b = B(); + container.bind().toValue(b); + container.bind().toFactory1((a) => DependOnA(a)); + + expect(container.resolve().a, b); + }); } ResolverMock _makeResolver(T expectedValue) {