У меня был бы к решительно второму ответ от Frank Krueger .
, Пока Вы говорите, Вам нужно регулярное выражение для соответствия адресу IPv6, я принимаю то, в чем Вы действительно нуждаетесь, должен быть в состоянии проверить, является ли данная строка допустимым адресом IPv6. Здесь существует тонкое, но важное различие.
существует больше чем один способ проверить, является ли данная строка допустимым адресом IPv6, и регулярное выражение, соответствующее, является только одним решением.
Пользуются существующей библиотекой, если Вы можете. Библиотека будет иметь меньше ошибок, и ее использование приведет к меньшему количеству кода для Вас для поддержания.
регулярное выражение, предложенное , Факторный Мистик длинен и сложен. Это, скорее всего, работает, но необходимо также рассмотреть, как Вы справились бы, если это неожиданно перестало работать. Мнение, которое я пытаюсь высказать здесь, - то, что, если Вы не можете сформировать необходимое регулярное выражение сами, Вы не будете в состоянии легко отладить его.
, Если у Вас нет подходящей библиотеки, может быть лучше записать Вашу собственную стандартную программу проверки IPv6, которая не зависит от регулярных выражений. Если Вы пишете его, Вы понимаете его и если Вы понимаете его, можно добавить комментарии для объяснения его так, чтобы другие могли также понять и впоследствии поддержать его.
закон с осторожностью при использовании регулярного выражения, функциональность которого Вы не можете объяснить кому-то еще.
Поможет ли вам предоставить тестовый дублер для контекста HTTP?
Это можно сделать следующим образом:
var httpCtxStub = new Mock<HttpContextBase>();
var controllerCtx = new ControllerContext();
controllerCtx.HttpContext = httpCtxStub.Object;
sut.ControllerContext = controllerCtx;
где sut
представляет тестируемую систему (SUT), то есть контроллер, который вы хотите протестировать.
В этом примере используется Moq.