我正在尝试Assert.AreEqual
在测试中使用来验证我们提供商的 DTO。
断言失败:
预期: DTO.EmployeeDTO
实际: DataProviders.Mappers.EmployeeMapper
我可以用我们的 DTO 和/或映射器做些什么来开始AreEqual
工作吗?我应该覆盖Equals
DTO 并Assert.Equal
改为使用吗?
这是我们预期的员工 DTO 进行比较:
EmployeeDTO expected = new EmployeeDTO
{
Category = "OPS",
Code = "EMPL",
Email = "bill.gates@microsoft.com",
JobDescription = "Philanthropist",
FirstName = "Bill",
Bolander = "Gates",
ResourceID = 1234567,
ResourceNumber = "ABCD1234567",
UserGUID = Guid.Parse("0A76A348-B709-9EF0-9E44-419433E7C90D"),
UserName = "billygates"
};
这是我们来自数据提供者的调用,它应该返回一个EmployeeDTO
我们可以与我们预期的 DTO 进行比较的值。
EmployeeDTO actual = controller.GetEmployee("billygates");
这是GetEmployee
应该返回员工 DTO 的提供程序方法:
public EmployeeDTO GetEmployee(string userName)
{
EmployeeDTO toReturn = null;
//Get employee
toReturn = (from employees in Context.EmployeeTable
where employees.UserName.Equals(userName)
select new EmployeeMapper
{
MapToFullDTO = employees
}
).SingleOrDefault<EmployeeDTO>();
}
请注意,该MapToFullDTO
属性是一个名为的类的一部分,该类EmployeeMapper
继承自EmployeeDTO
. 为了方便起见,此属性填充基类的属性,因此我们不必每次都写出映射。我知道这是问题的一部分,但我不知道为什么。