gpt4 book ai didi

c# - 为什么 Assert.AreEqual 在 上失败?类型不匹配?

转载 作者:行者123 更新时间:2023-11-30 14:31:35 26 4
gpt4 key购买 nike

我正在尝试在测试中使用 Assert.AreEqual 来验证我们提供商的 DTO。

断言失败:

Expected: DTO.EmployeeDTO

Actual: DataProviders.Mappers.EmployeeMapper

我可以用我们的 DTO 和/或映射器做些什么来让 AreEqual 工作吗?我应该为 DTO 覆盖 Equals 并改用 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");

这是应该返回员工 DTO 的 GetEmployee 提供程序方法:

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。为方便起见,此属性填充基类的属性,因此我们不必每次都写出映射。我知道这是问题的一部分,但我不确定为什么。

最佳答案

您需要覆盖类上的 Equals() 方法以根据属性值比较对象。

否则比较将比较明显不同的对象的引用。

关于c# - 为什么 Assert.AreEqual 在 <Object, Object> 上失败?类型不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com