private static void BuildPokemonApiServiceMock(
     Mock <IShakespeareApiService> shakespeareApiServiceMock,
     ShakespeareApiResult expectedModel)
 {
     shakespeareApiServiceMock
     .Setup(service => service.Translate(It.IsAny <string>()))
     .ReturnsAsync(() => expectedModel);
 }
        public async Task Test_WhenPokemonNameIsValid_ExpectTranslatedPokemon(
            Mock <IPokemonApiService> pokemonApiServiceMock,
            Mock <IShakespeareApiService> shakespeareApiServiceMock,
            Mock <ILogger <PokemonController> > logMock,
            string pokemonName,
            ShakespeareApiResult expectedApiResult,
            ShakespeareResult expectedResult)
        {
            // Arrange
            BuildPokemonApiServiceMock(shakespeareApiServiceMock, expectedApiResult);
            var pokemonController = new PokemonController(pokemonApiServiceMock.Object, shakespeareApiServiceMock.Object, logMock.Object);

            // Act
            var actionResult = await pokemonController.Get(pokemonName, CancellationToken.None);

            // Assert
            if (actionResult.Value != null)
            {
                var objectResult = Assert.IsType <OkObjectResult>(actionResult.Result);
                var translated   = Assert.IsType <ShakespeareResult>(objectResult.Value);
                Assert.Equal(expectedResult, translated, new TranslateResultComparer());
            }
        }