Loading...
a.angelov avatar a.angelov 1316 Точки

Assert на дати при тестване?

Дайте идея как да тестваме дали две дати са еднакви или поне каква може да е причината при мен да не се получава? Опитвам с .ToString() както е показано в някои дема, но винаги ми връща, че датите не са еднакви - въпреки че са такива. Тоест код като този ми гърми:

Assert.AreEqual(bugsFromService[i].DateCreated.ToString(), bugsFromDb[i].DateCreated.ToString());

 

Тагове:
0
C# Web Services & Cloud
a.angelov avatar a.angelov 1316 Точки

Мда, по твоя начин трябва да се получи.

Обаче и с ToString() също трябва да стане - аз явно не съм довидял какво ми пише в грешката: Result Message: Assert.AreEqual failed. Expected:<09/04/2015 12:37:21>. Actual:<09/04/2015 15:37:21>.

Има едни 3 часа разлика, която ми дава и сега се чудя защо се получава така..., явно като влезе в базата става нещо... :)))

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

С DateTime.Now ли го вкарваш в базата?

0
09/09/2015 13:49:08
a.angelov avatar a.angelov 1316 Точки

Да..., DateTime.Now.AddDays(...)

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Аз доколкото четох принципно е добра практика в базата дати да се вкарват с DateTime.UtcNow.

http://stackoverflow.com/questions/7708590/difference-in-usage-of-datetime-now-vs-datetime-utcnow

0
AleksandurSeferinkin avatar AleksandurSeferinkin 333 Точки

Според мен грешно сравняваш стойностите. Всяка дата в машината представлява 64 битово число, което е универсално и е едно и също за всички локализации.

Assert.AreEqual(bugsFromService[i].DateCreated.Ticks, bugsFromDb[i].DateCreated.Ticks);

По този начин не би трябвало да има проблеми, защото игнорираме различията в часовите пояси. Ако отново стойностите не са еднакви, значи работиш със съвсем различни дати.

2
Matrix avatar Matrix 1092 Точки

В този момент от това видео тук Наков споменава нещо, което винаги трябва да се има в предвид за DateTime.Now в C# и SQL сървър - https://youtu.be/hQ_O9yBN0Y4?t=7733

0
10/09/2015 10:29:50
a.angelov avatar a.angelov 1316 Точки

Да, това видео съм го гледал, и малко по-нататък Наков споменава, че точно за да елиминира разликата стрингосва двете сравнявани дати, като така реже милисекундите или нещо подобно беше.

С предложението на Александър Сеферинкин за ticks също не сработи :) Явно нещо друго бъркам за да ми дава 3 часа разлика..., и още не мога са се усетя какво :) А е сигурно, че работя с една и съща дата и час... - все пак преди тества зачиствам базата, тества създава ентити, вкарва го в базата, асъртвам...

Както и да е, благодаря на всички, ще търся проблема или просто няма да сравнявам датите :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.