public async Task TestService_OnErrorFromPersonServiceClient_ShouldDisplayError()
        {
            var logger            = Mock.Of <ILogger <PeopleInfoConsoleWriter> >();
            var peopleServiceMock = new Mock <IPeopleService>();

            peopleServiceMock.Setup(arg => arg.FetchAllAsync()).ThrowsAsync(new Exception("Error"));

            try
            {
                var writer = new PeopleInfoConsoleWriter(peopleServiceMock.Object, logger);
                await writer.Run();

                Assert.Fail();
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Error", ex.Message);
            }
        }
        public async Task TestService_OnSuccessResponseFromPeopleServiceClient_ShouldDisplayResult()
        {
            var mockResponse = new List <Person>();
            var person       = new Person();

            person.Name          = "Bob";
            person.Gender        = "Male";
            person.Age           = 2;
            person.PetCollection = new List <Pet>();
            person.PetCollection.Add(new Pet()
            {
                Name = "Garfield", Type = "Cat"
            });
            mockResponse.Add(person);

            var logger            = Mock.Of <ILogger <PeopleInfoConsoleWriter> >();
            var peopleServiceMock = new Mock <IPeopleService>();

            peopleServiceMock.Setup(arg => arg.FetchAllAsync())
            .Returns(Task.FromResult(mockResponse.AsEnumerable()));

            var writer = new PeopleInfoConsoleWriter(peopleServiceMock.Object, logger);
            await writer.Run();
        }