3

Assert.AreEqualテストで使用して、プロバイダーからの DTO を検証しようとしています。

アサートは次のように失敗しています:

想定: DTO.EmployeeDTO

実際: DataProviders.Mappers.EmployeeMapper

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

4

1 に答える 1