Как вы тестируете метод, чтобы увидеть, возвращает ли он PagedViewModel <AlertModel>()? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть класс обработчика, который принимает класс Query с 3 свойствами. Обработчик возвращает объект PagedViewModel. Я пытаюсь проверить, что этот обработчик возвращает то, что он должен вернуть, но я не могу заставить мой метод тестирования работать правильно.

Я попытался создать PagedViewModel и утверждать, что тестовая viewModel и фактическая viewModel были равны, но это не возвращает то, что я ожидал. (Это просто обычный PagedViewModel, а не Mock).

Результаты моих тестов выглядят одинаково, поэтому я не понимаю, в чем проблема.

Мой обработчик

protected override PagedViewModel<AlertModel> HandleCore(AlertsByOrgQuery request)
{
    List<AlertModel> alertsModel = new List<AlertModel>();
    List<long> alertTypes = new List<long>();
    Expression<Func<Alert, bool>> query = PredicateBuilder.True<Alert>();

    if (request.AlertTypes?.Any() == true) {
        foreach (var alertType in request.AlertTypes) {
            alertTypes.Add((int)alertType);
        }
    }

    PagedList<Alert> pagedAlerts;

    try {
        var alertsQuery = BuildQuery(request, alertTypes);

        pagedAlerts = new PagedList<Alert>(alertsQuery, request.Page, request.Rows);
    } catch (Exception ex) {
        _logger.Error("Error loading alerts.", ex);
        return null;
    }

    var viewModel = new PagedViewModel<AlertModel>();

    viewModel.PageNumber = pagedAlerts.PageNumber;
    viewModel.TotalRecordCount = pagedAlerts.TotalItemCount;
    viewModel.NumOfPages = pagedAlerts.PageCount;
    viewModel.Rows = pagedAlerts.Select(a => new AlertModel
    {
        Id = a.Id,
        TimeStamp = a.TimeStamp,
        Message = a.Message,
        EntityType = DataEntity.EnumDescription((HIMS.Entities.Alert.AlertType)Convert.ToInt32(a.EntityType))
    });

    return viewModel;
}

Мой класс запросов

public class AlertsByOrgQuery : DataPageModel, IRequest<PagedViewModel<AlertModel>>
{
    public bool ShowUnread { get; set; }
    public IEnumerable<HIMS.Entities.Alert.AlertType> AlertTypes { get; set; }
    public HIMS.Entities.Authorization Authorization { get; set; }
}

Мой метод испытаний

public async Task HandleCoreGivenValidRequestShouldReturnViewModel() {
    //arrange
    var repo = new OptionalOrgAuthorizableRepo<Alert>(_mockDb.Object, _auth.OrganizationId);
    var query = PredicateBuilder.True<Alert>();
    var _testAlerts = repo.Get(query);

    PagedList<Alert> pagedAlerts = new PagedList<Alert>(_testAlerts.AsQueryable(), 2, 3);
    _mockViewModel = new PagedViewModel<AlertModel>();

    _mockViewModel.PageNumber = pagedAlerts.PageNumber;
    _mockViewModel.TotalRecordCount = pagedAlerts.TotalItemCount;
    _mockViewModel.NumOfPages = pagedAlerts.PageCount;
    _mockViewModel.Rows = pagedAlerts.Select(a => new AlertModel {
        Id = a.Id,
        TimeStamp = a.TimeStamp,
        Message = a.Message,
        EntityType = DataEntity.EnumDescription((Entities.Alert.AlertType)Convert.ToInt32(a.EntityType))
    });

    var handler = new AlertsByOrgHandler(_mockLogger.Object, _mockDb.Object);
    var request = new AlertsByOrgQuery() {
        ShowUnread = false,
        AlertTypes = new List<Entities.Alert.AlertType> { (Entities.Alert.AlertType)Alert.AlertType.Case },
            Authorization = _auth,
            SIdx = "EntityType",
            SOrd = "desc",
            Page = 2,
            Rows = 3
        };

        //act
        var actual = await handler.Handle(request, new CancellationToken());
        //assert
        Assert.AreEqual(_mockViewModel, actual);
    }
}
...