public void TestFailsWhenUnspecifiedDependenciesAreCalled()
        {
            var sut = BloatedConstructorHelper.Make <BBOM_WithOnlyAbstractDependencies>().Build();

            Assert.Throws <Moq.MockException>(() =>
                                              sut.SomeMethodDependingOnA("I have not specified dependency A for this test"));
        }
        public void InvolvedDependenciesCanBeSpecified()
        {
            var sut = BloatedConstructorHelper.Make <BBOM_WithOnlyAbstractDependencies>()
                      .With <IDependencyA>(new SomeImplementationOfDependencyA())
                      .Build();

            Assert.AreEqual(10, sut.SomeMethodDependingOnA("5"));
        }
        public void InterfacesAreStrictlyMockedByDefault()
        {
            //AutoMocking dependencies A and B
            var sut = BloatedConstructorHelper.Make <BBOM_WithOnlyAbstractDependencies>().Build();

            Assert.IsNotNull(sut);
            Assert.IsInstanceOf <BBOM_WithOnlyAbstractDependencies>(sut);
        }
        public void NonAbstractDependenciesWithConstructorArgumentsCannotBeAutoMocked()
        {
            Assert.Throws <Castle.DynamicProxy.InvalidProxyConstructorArgumentsException>(() =>
                                                                                          BloatedConstructorHelper.Make <BBOM_WithClassDependencies>()
                                                                                          .Build());

            Assert.DoesNotThrow(() =>
                                BloatedConstructorHelper.Make <BBOM_WithClassDependencies>()
                                .With(new ImplementationX(1, 2))
                                .Build());
        }