Почему NUnit Framework вызывает исключение DateTime AssertionException? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь отформатировать DateTime, но не изменяю свойство на тип string.

Моя собственность выглядит следующим образом DateTime DateApplicationReceived = FormatDateTime();

Я сделал для этого небольшую функцию, которая позволяет мне разбирать мой string на тип DateTime.

private static DateTime FormatDateTime()
{
    var format = DateTime.UtcNow.ToString("G");

    var dateTime = DateTime.Parse(format);
    return dateTime;
}

Допустим, дата и время сейчас: 16.01.2009 15:30:00. Я использую NUnit, чтобы проверить, что моя функция работает, выполнив следующее утверждение:

public void ConvertsTime()
{
    var sut = DateApplicationReceived;

    Assert.That(sut, Is.EqualTo("16/01/2019 15:30:00"));
}

Мой тест не пройден. Ожидаемый результат игнорирует формат («G») и отображает его в другой культуре 2019-01/16.

Отладочная информация: debug info

Почему он это делает? Я просто придаю формату и изменяю вариант культуры. Кажется, не имеет никакого эффекта.

1 Ответ

0 голосов
/ 16 января 2019

Объект DateTime не имеет формата.

Так что ваш код здесь бесполезен:

var format = DateTime.UtcNow.ToString("G");
var dateTime = DateTime.Parse(format);

Это полностью эквивалентно

var dateTime = DateTime.UtcNow;

В своем модульном тесте вы должны сравнить DateTime с DateTime или string с string. В настоящее время вы сравниваете DateTime с string.

Так что вы должны изменить свой код на:

Assert.That(sut.ToString("G"), Is.EqualTo("16/01/2019 15:30:00"));

или

Assert.That(sut, Is.EqualTo(DateTime.Parse("16/01/2019 15:30:00")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...