Assert на дати при тестване?
Дайте идея как да тестваме дали две дати са еднакви или поне каква може да е причината при мен да не се получава? Опитвам с .ToString() както е показано в някои дема, но винаги ми връща, че датите не са еднакви - въпреки че са такива. Тоест код като този ми гърми:
Assert.AreEqual(bugsFromService[i].DateCreated.ToString(), bugsFromDb[i].DateCreated.ToString());
С DateTime.Now ли го вкарваш в базата?
Да..., DateTime.Now.AddDays(...)
Аз доколкото четох принципно е добра практика в базата дати да се вкарват с DateTime.UtcNow.
http://stackoverflow.com/questions/7708590/difference-in-usage-of-datetime-now-vs-datetime-utcnow
Според мен грешно сравняваш стойностите. Всяка дата в машината представлява 64 битово число, което е универсално и е едно и също за всички локализации.
Assert.AreEqual(bugsFromService[i].DateCreated.Ticks, bugsFromDb[i].DateCreated.Ticks);
По този начин не би трябвало да има проблеми, защото игнорираме различията в часовите пояси. Ако отново стойностите не са еднакви, значи работиш със съвсем различни дати.
В този момент от това видео тук Наков споменава нещо, което винаги трябва да се има в предвид за DateTime.Now в C# и SQL сървър - https://youtu.be/hQ_O9yBN0Y4?t=7733
Да, това видео съм го гледал, и малко по-нататък Наков споменава, че точно за да елиминира разликата стрингосва двете сравнявани дати, като така реже милисекундите или нещо подобно беше.
С предложението на Александър Сеферинкин за ticks също не сработи :) Явно нещо друго бъркам за да ми дава 3 часа разлика..., и още не мога са се усетя какво :) А е сигурно, че работя с една и съща дата и час... - все пак преди тества зачиствам базата, тества създава ентити, вкарва го в базата, асъртвам...
Както и да е, благодаря на всички, ще търся проблема или просто няма да сравнявам датите :)