Вы действительно можете вернуть HttpWebResponse
без насмешек, см. Мой ответ здесь .Он не требует никаких «внешних» интерфейсов прокси, только «стандартные» WebRequest
WebResponse
и ICreateWebRequest
.
Если вам не нужен доступ к HttpWebResponse
и вы можете справиться только с WebResponse
это даже проще;мы делаем это в наших модульных тестах, чтобы вернуть «готовые» ответы на контент для потребления.Мне пришлось «пройти лишнюю милю», чтобы вернуть действительные коды состояния HTTP, чтобы смоделировать, например, 404 ответа, которые требуют использования HttpWebResponse
, чтобы вы могли получить доступ к свойству StatusCode
и др.
ДругойРешения, предполагающие, что все HttpWebXXX
игнорирует все, что поддерживается WebRequest.Create()
, кроме HTTP , который может быть обработчиком для любого зарегистрированного префикса, который вы хотите использовать (через WebRequest.RegisterPrefix()
, и если вы его игнорируете, выотсутствует, потому что это отличный способ показать другие потоки контента, к которым у вас нет другого доступа, например, к потокам встроенных ресурсов, потокам файлов и т. д.
Кроме того, явное приведение возврата WebRequest.Create()
к HttpWebRequest
- это путь к разрыву , так как тип возвращаемого значения метода - WebRequest
и снова, показывает некоторое незнание того, как этот API на самом деле работает.