ActionResultмодульный тест - PullRequest
       4

ActionResultмодульный тест

0 голосов
/ 20 февраля 2019
public class crumbController: Controller

{

   public ActionResult<IEnumerable<Crumb>> GetBreadcrumb([FromRoute]int tag_X_ParentID)

   {

       try
       {
           Services.Interface.IBreadcrumbService service = new Services.Imp.BreadcrumbService(_configuration, _logger);

           if (service != null)
           {
               Breadcrumb breadcrumb = service.GetBreadcrumb(ParentID);
               return Ok(breadcrumb.crumbs.ToList());
            }
            else
            {
               return BadRequest("Unable to establish connection.");
            }
        }
        catch (Exception ex)
        {
            _logger.LogError(ex.Message, ex);//log error
            return BadRequest(ex.Message);
        }

      }
 }

 public class crumbControllerShould
 {
    [Fact]
    public void GetBreadCrumbsTest()
    {
        IConfiguration _configuration;
        IHostingEnvironment _env;
        ILoggerManager _logger;

        int tag_X_ParentID = 12;


        var mock_logger = new Mock<ILoggerManager>();
        _logger = mock_logger.Object;
        var mock_configuration = new Mock<IConfiguration>();
        _configuration = mock_configuration.Object;

        var mock_env = new Mock<IHostingEnvironment>();

        mock_env
            .Setup(m => m.EnvironmentName)
            .Returns("http://localhost:8980/");

        _env = mock_env.Object;

        Assert.IsAssignableFrom<IHostingEnvironment>(_env);
        Assert.IsAssignableFrom<IConfiguration>(_configuration);
        Assert.IsAssignableFrom<ILoggerManager>(_logger);

        var controller = new BreadcrumbController(_configuration, _env, _logger);
        var result = controller.GetBreadcrumb(tag_X_ParentID);
        Assert.NotNull(result);
        Assert.IsType<IEnumerable<Crumb>>(result);                     
       //this line fails indicating that expected: System.Collections.Generic.IEnumerable'1[[FHH.crumpApi.Entitities.crumb, FHH.BreadcrumbApi]] 

      //Actual: Microsoft.AspNetCore.Mvc.ActionResult'1 [[System.Collections.Generic.IEnumerable'1[[FHH.crubmApi.Entities.crumb,FHH.crumbapi]]
    }
}

;Пожалуйста, посмотрите на закомментированную строку в коде, который объясняет проблему.
Кроме того, мне нужно получить объект для сравнения Assert.Equal (2, item.tagID).
Если я исправлюВ связи с проблемой, я бы назначил это переменной с именем actionResult, а затем это присвоило его var item = actionResult.firstOrDefault (), чтобы получить item.tagID.Я следую следующему образцу на этом сайте для IEnumerable модульного теста.Спасибо за любые отзывы.

Смотрите пример ссылки

1 Ответ

0 голосов
/ 20 февраля 2019

Вам нужно получить значение модели вашего ActionResult, чтобы делать то, что вы хотели.Вы можете сделать это, приведя свой ActionResult к ViewResult и получив значение модели.Пожалуйста, обратитесь к принятому ответу на этот вопрос для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...