Весь запрос и ответ шифруются, включая URL.
Примечание, что, когда Вы используете Прокси HTTP, оно знает адрес (домен) целевого сервера, но не знает запрашиваемого тракта на этом сервере (т.е. запрос и ответ всегда шифруются).
Я понимаю, откуда вы пришли, однако, если вы пытаетесь имитировать функциональность метода расширения, я считаю, что вы используете их неправильно. Методы расширения следует использовать для выполнения задачи, без которой было бы просто синтаксически неудобно. Ваш TruncateToLength - хороший пример.
Тестирование TruncateToLength не потребовало бы его имитации, оно просто потребовало бы создания нескольких строк и проверки того, действительно ли метод вернул правильное значение.
С другой стороны, если вы есть код на вашем уровне данных, содержащийся в методах расширения, которые обращаются к вашему хранилищу данных, тогда да, у вас есть проблема, и тестирование станет проблемой.
Я обычно использую методы расширения только для того, чтобы обеспечить синтаксический сахар для небольших , простые операции.
Больно, потому что их сложно высмеять. Я обычно использую одну из этих стратегий
т.е.
static class TruncateExtensions{
public ITruncateService Service {private get;set;}
public string TruncateToSize(string s, int size)
{
return (Service ?? Service = new MyDefaultTranslationServiceImpl()). TruncateToSize(s, size);
}
}
Это немного пугает, потому что кто-то может установить службу, когда не следует, но иногда я немного дерзок, и если бы это было действительно важно, я мог бы сделать что-нибудь умное с флагами #if TEST или шаблон ServiceLocator, чтобы избежать использования установщика в производственной среде.
Я думаю, что это нормально - потому что это не похоже на TruncateToSize
, реально заменяемый компонент. Это метод, который когда-либо должен будет делать только одну вещь.
Вы не делаете ' Не нужно иметь возможность имитировать все - только службы, которые либо нарушают модульное тестирование (доступ к файлам и т. д.), либо те, которые вы хотите протестировать с точки зрения подлинных зависимостей. Если бы вы использовали его для аутентификации или чего-то в этом роде, это было бы совсем другое дело ... но вы просто выполняете прямую строковую операцию, которая не имеет абсолютно никаких настроек, различных вариантов реализации и т.д. - нет смысла рассматривать это как зависимость в нормальном смысле.
Другими словами: если бы TruncateToSize
был подлинным членом String
, вы бы даже дважды подумали, прежде чем использовать его? Вы также пытаетесь имитировать целочисленную арифметику, вводя IInt32Adder
и т. Д.? Конечно нет. Это то же самое, только вы предоставляете реализацию.