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
。このプロパティは、便利な目的で基本クラスのプロパティを設定するため、毎回マッピングを書き出す必要はありません。これが問題の一部であることは理解していますが、その理由はわかりません。