с использованием даты string.Format и UnitTest - PullRequest
1 голос
/ 08 октября 2011

Даты и форматирование всегда были для меня кошмаром. В последнее время я много пишу в файл, где даты должны быть преобразованы в строки в различных форматах (в зависимости от клиента).

Я хотел бы создать юнит-тест, способный консолидировать лот, просто приведу пару примеров.

Приведенный ниже тест не пройден, так как «09 марта» и «09 марта» не совпадают. Как я узнаю об этой культуре теста? Лучше кого-нибудь проверить?

        [TestCase("March 09", "{0:m}")]                        
        [TestCase("March, 2008", "{0:y}")]  
             [TestCase("3/9/2008 4:05 PM", "{0:g}")                       
        public void When_stringFormat_a_date_should_match(string expected,string format)
        {
            DateTime dt = new DateTime(2008, 03, 09, 16, 05, 07);

            string actual = String.Format(format, dt);

           assert ??                
        }

Ответы [ 2 ]

3 голосов
/ 08 октября 2011

Вы звоните String.ToString()! Не имеет смысла указывать CultureInfo (или даже использовать эту функцию), так как это всегда возвращает исходную строку независимо от указанной культуры.

ИМО, вы должны указать CultureInfo при преобразовании даты, т.е.

string actual = String.Format(CultureInfo.InvariantCulture, format, dt);
Assert.AreEqual(expected, actual);
1 голос
/ 08 октября 2011
Assert.AreEqual(expected, actual);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...