Свойства внутреннего исключения утилизируются?
Я пишу модульный тест для веб-службы 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 ответ
Кажется проблема исключения сериализации. Возможно, вам придется перехватить ошибку на сервере и создать сообщение об ошибке