mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-23 21:13:35 +00:00
implemented toFactory2 method
This commit is contained in:
@@ -70,8 +70,9 @@ class ResolvingContext<T> extends Resolver {
|
||||
* Создать фабричный resolver с 2 зависимостями от контейнера
|
||||
*/
|
||||
ResolvingContext<T> toFactory2<T1, T2>(T Function(T1, T2) factory) {
|
||||
// TODO: implement toFactory2
|
||||
throw UnimplementedError();
|
||||
Resolver<T> resolver = FactoryResolver<T>(
|
||||
() => factory(_container.resolve<T1>(), _container.resolve<T2>()));
|
||||
return toResolver(resolver);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -135,19 +135,31 @@ void main() {
|
||||
|
||||
test("Bind to the factory resolves with value", () {
|
||||
final container = DiContainer();
|
||||
final b = B();
|
||||
container.bind<A>().toFactory(() => b);
|
||||
final a = AA();
|
||||
container.bind<A>().toFactory(() => a);
|
||||
|
||||
expect(container.resolve<A>(), b);
|
||||
expect(container.resolve<A>(), a);
|
||||
});
|
||||
|
||||
test("Bind to the factory resolves with value", () {
|
||||
final container = DiContainer();
|
||||
final b = B();
|
||||
container.bind<A>().toValue(b);
|
||||
final a = AA();
|
||||
container.bind<A>().toValue(a);
|
||||
container.bind<DependOnA>().toFactory1<A>((a) => DependOnA(a));
|
||||
|
||||
expect(container.resolve<DependOnA>().a, b);
|
||||
expect(container.resolve<DependOnA>().a, a);
|
||||
});
|
||||
|
||||
test("Bind to the factory resolves with 2 value", () {
|
||||
final container = DiContainer();
|
||||
final a = AA();
|
||||
final b = BB();
|
||||
container.bind<A>().toValue(a);
|
||||
container.bind<B>().toValue(b);
|
||||
container.bind<DependOnAB>().toFactory2<A, B>((a, b) => DependOnAB(a, b));
|
||||
|
||||
expect(container.resolve<DependOnAB>().a, a);
|
||||
expect(container.resolve<DependOnAB>().b, b);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -161,10 +173,21 @@ class ResolverMock<T> extends Mock implements Resolver<T> {}
|
||||
|
||||
abstract class A {}
|
||||
|
||||
class B implements A {}
|
||||
class AA implements A {}
|
||||
|
||||
abstract class B {}
|
||||
|
||||
class BB implements B {}
|
||||
|
||||
class DependOnA {
|
||||
final A a;
|
||||
|
||||
DependOnA(this.a) : assert(a != null);
|
||||
}
|
||||
|
||||
class DependOnAB {
|
||||
final A a;
|
||||
final B b;
|
||||
|
||||
DependOnAB(this.a, this.b) : assert(a != null && b != null);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user