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に依存する上記の方法をテストしたいと思います。 以下は、Test Methodのコードです。IQueryableマッピングのAutoMapperテスト
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();
私は正しいCountを返しますが、オブジェクトはすべてNullです。私は返品を使用しようとしましたが、それは1つのオブジェクトを返します。 コレクションを返すことはできますか?列挙子は、関数を使用するからかったときに
私は実際の 'Automapper'クラスを使うことをお勧めします。なぜなら、コード内でUTと同様に動作するからです。結局のところ、あなたはそれをテストしていません。あなたのコードをテストしていて、 '.Map <>'が正しく呼び出されているかどうかをチェックします。 – zaitsman