Как утверждать плохо инициализированную коллекцию в visualStudio unitTesting? - PullRequest
0 голосов
/ 11 марта 2012

Я написал следующий код:

[TestMethod]
//[ExpectedException(typeof(UriFormatException), "url should be well formatted.")]
public void FetchHtmlContent_badUrl_throwUriFormatException()
{
    HashSet<string> urls = new HashSet<string> { "ww.stackoverflow.com" };
    var contextManager = new ContentManager(urls);
    var content = contextManager.GetHtmlContent();
    Assert.IsTrue(content.ElementAt(0).Contains("threw an exception of type 'System.UriFormatException'"));
}

contextManager.GetHtmlContent () не выдает исключение,

но content.ElementAt(0) бросков (как и ожидалось)

+       content.ElementAt(0)    'content.ElementAt(0)' threw an exception of type 'System.UriFormatException'   string {System.UriFormatException}

Как проверить содержимое. ElementAt (0) выдает это исключение

(или я должен проверить этот тест другим способом?)

1 Ответ

2 голосов
/ 11 марта 2012

За что отвечает метод ContentManager.GetHtmlContent?Если, как следует из названия, при извлечении HTML-содержимого из URL-адреса недействительным URL-адресом является сценарий сбой выполнения (метод не может сделать то, что должен).У вас есть два варианта:

  • выбросить недопустимый uri Исключение из метода .GetHtmlContent (хорошо сообщает, что происходит, и следует рекомендациям Microsoft )
  • return nullиз .GetHtmlContent и справимся с этим позже

Обратите внимание, что возвращающий нулевой результат может также использоваться для случая, когда HTML-содержимое действительно null, поэтому я предлагаю выбрасывать исключениеВот.Это объясняет, что произошло более понятным образом.

Ваш тест может выглядеть так:

[TestMethod]
[ExpectedException(typeof(UriFormatException), "url should be well formatted.")]
public void GetHtmlContent_ThrowsInvalidUriException_WhenUriIsInBadFormat()
{
    HashSet<string> urls = new HashSet<string> { "ww.stackoverflow.com" };
    var contextManager = new ContentManager(urls);

    contextManager.GetHtmlContent();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...