Свойства внутреннего исключения утилизируются? - PullRequest
5 голосов
/ 25 июня 2011

Я пишу модульный тест для веб-службы WCF. Я намеренно отправляю неверный запрос на сервер, который выбрасывает WebExceptionFault<string>. В модульном тесте исключение, которое получено, представляет собой EndpointNotFoundException со стандартом WebException в свойстве InnerException. Я хочу убедиться, что тело ответа соответствует строке, которая, по моему мнению, должна быть там.

Однако я сталкиваюсь с проблемой, так как свойство Response WebException (то есть System.Net.SyncMemoryStream) удалено и не может быть прочитано.

Мой код:

Clubs actual;
try
{
    //"201" is an invalid argument for the first parameter
    actual = new Clubs(channel.GetClubs("201", "123"));
}
catch (EndpointNotFoundException e)
{
    WebException w = e.InnerException as WebException;
    Assert.IsNotNull(w);

    HttpWebResponse resp = w.Response as HttpWebResponse;
    Assert.IsNotNull(resp);
    Assert.AreEqual(resp.StatusCode, HttpStatusCode.NotFound);
    //Next line throws an ArgumentException saying Stream not readable
    //Investigation shows it has been disposed
    using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
        Assert.AreEqual(sr.ReadToEnd(), "League not allowed for selected club");
}

Это нормально, что свойства InnerException расположены? Есть ли способ обойти это?

1 Ответ

0 голосов
/ 22 июля 2011

Кажется, проблема с сериализацией исключений.Возможно, вам придется перехватить ошибку на сервере, и пользовательская сборка сообщения об ошибке

Как сериализовать объект исключения в C #?

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