public void When_framework_dependency_constructor_cannot_be_satisfied_then_exception_is_swallowed()
        {
            var container = new PocketContainer();
            container.Register<IContentNegotiator>(c => c.Resolve<UnsastisfiableDependency>());
            var sut = new PocketContainerDependencyResolver(container);

            Action resolveFrameworkDependency =
                () => sut.GetService(typeof (IContentNegotiator));
            Action resolveFrameworkDependencies =
                () => sut.GetServices(typeof (IContentNegotiator)).ToArray();

            resolveFrameworkDependency.ShouldNotThrow("because we're resolving a framework service");
            resolveFrameworkDependencies.ShouldNotThrow("because we're resolving a framework service");
        }
        public void When_nonframework_dependency_constructor_cannot_be_satisfied_then_exception_is_thrown()
        {
            var container = new PocketContainer();
            container.Register<IMyDependency>(c => c.Resolve<UnsastisfiableDependency>());
            var sut = new PocketContainerDependencyResolver(container);

            Action resolveFrameworkDependency =
                () => sut.GetService(typeof (IMyDependency));

            resolveFrameworkDependency.ShouldThrow<ArgumentException>("because GetService is resolving our own interface")
                .And
                .Message
                .Should()
                .Contain("+IAmUnregistered");
        }
        public void When_framework_dependency_constructor_throws_then_exception_is_thrown()
        {
            var container = new PocketContainer();
            container.Register<IContentNegotiator>(c => new DependencyThatThrowOnConstruction());
            var sut = new PocketContainerDependencyResolver(container);

            Action resolveFrameworkDependency =
                () => sut.GetService(typeof (IContentNegotiator));

            resolveFrameworkDependency.ShouldThrow<HttpParseException>(
                "because framework service implementation constructor threw an exception");
        }
        public void When_nonframework_dependency_constructor_throws_then_exception_is_thrown()
        {
            var container = new PocketContainer();
            container.Register<IMyDependency>(c => new DependencyThatThrowOnConstruction());
            var sut = new PocketContainerDependencyResolver(container);

            Action resolveFrameworkDependency =
                () => sut.GetService(typeof (IMyDependency));

            resolveFrameworkDependency.ShouldThrow<HttpParseException>("because GetService is resolving our own interface");
        }