Я делаю unittests для приложения asp.net. Из-за того, как класс, я в настоящее время тестирования предназначена она использует несколько потоков и, таким образом, вручную устанавливает язык для одного из нитей:Как установить UserLanguages для модульных тестов (используя смешные контексты http)?
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(HttpContext.Current.Request.UserLanguages[0]);
Для этой работы я насмешливый HttpContext, используя следующий класс в UnitTests, прежде чем запускать класс, который содержит приведенный выше код:
public class HttpContextMock
{
public static HttpContext MockedHttpContext()
{
var httpRequest = new HttpRequest("", "MyUrl", "");
var stringWriter = new StringWriter();
var httpResponse = new HttpResponse(stringWriter);
var httpContext = new HttpContext(httpRequest, httpResponse);
var sessionContainer = new HttpSessionStateContainer("id", new SessionStateItemCollection(),
new HttpStaticObjectsCollection(), 10, true,
HttpCookieMode.AutoDetect,
SessionStateMode.InProc, false);
httpContext.Items["AspSession"] = typeof(HttpSessionState).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null, CallingConventions.Standard,
new[] { typeof(HttpSessionStateContainer) },
null)
.Invoke(new object[] { sessionContainer });
return httpContext;
}
Теперь проблема даже если я получаю правильное HttpContext команды
HttpContext.Current.Request.UserLanguages
Всегда г eturns null.
Итак, мой вопрос заключается в том, что можно сделать, чтобы гарантировать, что UserLanguages возвратят хотя бы 1 запись?