2011-01-05 11 views
0

ich eine Klassenstruktur wie diese habenMbUnit Assert.AreEqual Datetime und Dezimal sind nicht gleich

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; 
} 

ich alle Eigenschaften ausfüllen und an die DB speichern, danach bekomme ich diese Aufgabe von der DB

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

und versuchen, die Werte auf diese Weise

Assert.AreEqual(entity, entityFromDb); 

und der Vergleich zu vergleichen auf der Datetime ein faild nd Dezimalwerte

Erwartete Werte sind gleich.

Erwarteter Wert: Id = 28, CreatedAt = 2011-01-05T14: 06: 32. 6874218Z, DeletedAt = null, Description = "Beschreibung", Dauer = 2000m, Label = "Test Entity", ModifiedAt = 2011-01-05T14: 06: 32. 6874218Z

Aktueller Wert: Id = 28, CreatedAt = 2011-01-05T14: 06: 32. , DeletedAt = null, Description = "Beschreibung", Dauer = 2000.00000m, Label = "Test Entity", ModifiedAt = 2011-01-05T14: 06: 32.

Kann ich vergleichen diese Werte in irgendeiner Weise, aber ohne einen Vergleich der einzelnen Felder

Antwort

3

Eine Option wäre, um Ihre Setter für Datetime zu ändern, so dass sie das Abschneiden an diesem Punkt durchführen - im Grunde die Problem ist, dass Ihre DB keine Genauigkeit im Sekundentakt speichert, daher erscheint es sinnvoll, sie auch nicht in der Entity zu haben.

Ich würde erwarten, dass die Dezimalwerte bereits als gleich verglichen werden, obwohl sie unterschiedliche gespeicherte Genauigkeit haben. (1.000m und 1.0m haben unterschiedliche Darstellungen, gelten aber als gleich.)

Verwandte Themen