import 'package:dart_di/di_container.dart'; import 'package:dart_di/resolvers/resolver.dart'; import 'package:test/test.dart'; import 'package:mockito/mockito.dart'; void main() { group('Without parent', () { test('Container bind throws state error if it\'s already has resolver', () { final container = new DiContainer(); container.bind().toResolver(_makeResolver(5)); expect(() => container.bind().toResolver(_makeResolver(3)), throwsA(isA())); }); test("Container resolves value after adding a dependency", () { final expectedValue = 3; final container = new DiContainer(); container.bind().toResolver(_makeResolver(expectedValue)); expect(container.resolve(), expectedValue); }); }); } ResolverMock _makeResolver(T expectedValue) { final resolverMock = new ResolverMock(); when(resolverMock.resolve()).thenReturn(expectedValue); return resolverMock; } class ResolverMock extends Mock implements Resolver {} abstract class A {} class B implements A {} class DependOnA { final A a; DependOnA(this.a) : assert(a != null); }