public List<Models.Employer> GetEmployers()
{
List<Models.Employer> empList = new List<Models.Employer>();
var list = DataCentralDbContext.Employers.ToList();
foreach (Data.Web.Employer e in list)
{
empList.Add(Mapper.Map<Data.Web.Employer, Models.Employer>(e));
}
return empList;
}
Я хочу протестировать вышеуказанный метод, который имеет зависимость от AutoMapper. Ниже приведен код метода испытаний.Тест AutoMapper для сопоставления IQueryable
var data = new List<Data.Web.Employer>
{
new Data.Web.Employer {EmployerID= new Guid(), EmployerName = "BBB", AddressLine1="address 1", AddressLine2="address 2", City="City1",State="we",IsActive=true, PostalCode="12345" },
new Data.Web.Employer {EmployerID= new Guid(), EmployerName = "ZZZ",AddressLine1="address 1", AddressLine2="address 2", City="City1",State="we",IsActive=true, PostalCode="12345" },
new Data.Web.Employer {EmployerID= new Guid(), EmployerName = "AAA",AddressLine1="address 1", AddressLine2="address 2", City="City1",State="we",IsActive=true, PostalCode="12345" },
}.AsQueryable();
var mockSet = new Mock<DbSet<Data.Web.Employer>>();
mockSet.As<IQueryable<Data.Web.Employer>>().Setup(m => m.Provider).Returns(data.Provider);
mockSet.As<IQueryable<Data.Web.Employer>>().Setup(m => m.Expression).Returns(data.Expression);
mockSet.As<IQueryable<Data.Web.Employer>>().Setup(m => m.ElementType).Returns(data.ElementType);
mockSet.As<IQueryable<Data.Web.Employer>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());
var mockContext = new Mock<IDataCentralDbContext>();
mockContext.Setup(c => c.Employers).Returns(mockSet.Object);
var mapperMock = new Mock<IMapper>();
mapperMock.Setup(m => m.Map<CSF.Data.Web.Employer, CSF.Models.Employer>(It.IsAny<CSF.Data.Web.Employer>()));
var emplogic = new EmployerLogic(mockContext.Object, mapperMock.Object);
var result = emplogic.GetEmployers();
Я верну правильный граф, но все объекты Null. Я попытался использовать Returns, но он возвращает только один объект. Можно ли вернуть коллекцию?
Я предлагаю вам использовать настоящий класс 'Automapper', потому что он работает так же хорошо и в UT, как и в коде. В конце концов, вы не тестируете его, вы проверяете свой код, который проверяет правильность вызова '.Map <>'. – zaitsman