MbUnit Assert.AreEqual DateTime и Decimal не равны - PullRequest
0 голосов
/ 05 января 2011

У меня есть такая структура классов

public class Entity
{
    public int Id { get; set; }
    public string Label { get; set; }
    public string Description { get; set; }
    public DateTime CreatedAt { get; set; }
    public DateTime ModifiedAt { get; set; }
    public DateTime? DeletedAt { get; set; 
}

Я заполняю все свойства и сохраняю их в БД, после чего получаю этот объект из БД

var entity = CreateEntity()
SaveToDB(entity);
var entityFromDb = GetFromDB();

ипопробуйте сравнить значения таким образом

Assert.AreEqual(entity, entityFromDb);

и сравнение не удастся для значений DateTime и Decimal

Ожидаемые значения будут равны.

Ожидаемое значение: Id= 28, CreatedAt = 2011-01-05T14: 06: 32. 6874218Z , DeletedAt = null, Описание = "Описание", Длительность = 2000 м , Метка = "Тестовый объект",ModifiedAt = 2011-01-05T14: 06: 32. 6874218Z

Фактическое значение: Id = 28, CreatedAt = 2011-01-05T14: 06: 32. 0000000 , DeletedAt = null, Description = "Description", Duration = 2000.00000m , Label = "Test Entity", ModifiedAt = 2011-01-05T14: 06: 32. 0000000

Можно ли как-то сравнить эти значения, но без сравнения каждого поля

1 Ответ

3 голосов
/ 05 января 2011

Один из вариантов - изменить сеттеры для DateTimes, чтобы они выполняли усечение в этот момент - в основном проблема заключается в том, что ваша БД не хранит точность до секунды, поэтому кажется разумным также не иметь ее в объекте.

Я ожидаю, что десятичные значения будут сравниваться как равные уже, даже если они имеют различную хранимую точность. (1.000м и 1.0м имеют разные представления, но считаются равными.)

...