У меня есть класс обработчика, который принимает класс 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);
}
}