public void calls_get_top_selling_candy()
            {
                // Arrange
                var candy = A.Fake<ICandy>();
                var shop = A.Fake<ICandyShop>();

                A.CallTo(() => shop.GetTopSellingCandy()).Returns(candy);

                var target = new Developer(shop);

                // Act
                var result = target.BuyTastiestCandy();

                // Assert
                A.CallTo(() => shop.GetTopSellingCandy()).MustHaveHappened(Repeated.Exactly.Once);
            }
            public void throws_exception_for_too_expensive_candy()
            {
                // Arrange
                var candy = A.Fake<ICandy>();
                var shop = A.Fake<ICandyShop>();

                A.CallTo(() => candy.Price).Returns(10000);
                A.CallTo(() => shop.GetTopSellingCandy()).Returns(candy);

                var target = new Developer(shop);

                // Act
                var result = Assert.Throws<Exception>(() => target.BuyTastiestCandy());

                // Assert
                Assert.Equal(result.Message, "Too expensive");
            }