у меня есть следующий код, который перестал работать во время времени выполнения...
var mock = new Mock<ControllerContext>();
mock.SetupGet(x => x.HttpContext.Request
.ServerVariables["HTTP_HOST"]).Returns(domain);
** Ошибка периода выполнения: Недопустимая установка на непереопределяемом свойстве
У меня есть некоторый код в моем контроллере, который должен проверить домен, пользователь запрашивал/шел.
Я не уверен, как копировать его? какие-либо идеи?
PS. Я использую Moq framewoke в вышеупомянутом примере.. таким образом, я не уверен, является ли это проблемой и т.д.?
Вы не можете подражать индексатору на NameValueCollection, потому что он не виртуальный. Я бы поиздевался над свойством ServerVariables, поскольку оно виртуальное. Вы можете заполнить свою собственную NameValueCollection. Смотрите ниже
Вот что я бы сделал:
var context = new Mock<ControllerContext>();
NameValueCollection variables = new NameValueCollection();
variables.Add("HTTP_HOST", "www.google.com");
context.Setup(c => c.HttpContext.Request.ServerVariables).Returns(variables);
//This next line is just an example of executing the method
var domain = context.Object.HttpContext.Request.ServerVariables["HTTP_HOST"];
Assert.AreEqual("www.google.com", domain);
Я использую position: relative;
, чтобы надстрочные символы по-прежнему могли подниматься над vertical-align: top;
, но не позволяли им связываться с ведущими из моих абзацев.
sup {
font-size: .7em;
vertical-align: top;
position: relative;
top: -.1em;
}
-121--4180316- Можно посмотреть, как Zend Framework реализовал компонент Plugin Loader
.
В основном задается путь к месту хранения подключаемых модулей, и загрузчик пытается загрузить первый подключаемый модуль, найденный способом LIFO.
-121--4998113-В своих тестах вы можете включить в себя интерфейс и имитировать его:
interface IHttpContextValues
{
string HttpHost { get; }
}
class HttpContextValues : IHttpContextValues
{
public string HttpHost
{
get { return HttpContext.Current.Request.ServerVariables["HTTP_HOST"]; }
}
}
class BaseController : Controller
{
public IHttpContextValues HttpContextValues;
BaseController()
{
HttpContextValues = new HttpContextValues();
}
}
Затем в коде контроллера вместо ControleyContext. Не нужно делать никаких комбинаций о насмешках.