Как я могу дразнить значение ASP.NET ServerVariables ["HTTP_HOST"]?

у меня есть следующий код, который перестал работать во время времени выполнения...

var mock = new Mock<ControllerContext>();
mock.SetupGet(x => x.HttpContext.Request
    .ServerVariables["HTTP_HOST"]).Returns(domain);

** Ошибка периода выполнения: Недопустимая установка на непереопределяемом свойстве

У меня есть некоторый код в моем контроллере, который должен проверить домен, пользователь запрашивал/шел.

Я не уверен, как копировать его? какие-либо идеи?

PS. Я использую Moq framewoke в вышеупомянутом примере.. таким образом, я не уверен, является ли это проблемой и т.д.?

5
задан Pure.Krome 23 February 2010 в 01:07
поделиться

2 ответа

Вы не можете подражать индексатору на 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);
5
ответ дан 14 December 2019 в 13:34
поделиться

Я использую 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. Не нужно делать никаких комбинаций о насмешках.

1
ответ дан 14 December 2019 в 13:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: