Сегодня я столкнулся с проблемой, когда я не могу вызвать ControllerContext в моем контроллере в рамках метода модульного тестирования MS при доступе через закрытый метод. Например
//This is my controller and private GetUsers() method
public class SampleController : Controller
{
private IEnumerable<Users> GetUsers()
{
try
{
string cacheKey = "UserKey";
IList<User> users;
if (this.HttpContext.Cache[cacheKey] != null)
{
users= (IList<User>)this.HttpContext.Cache[cacheKey];
}
else
{
users= UserService.GetUsers();
if (users!= null)
{
this.HttpContext.Cache.Insert(cacheKey, users, null, DateTime.Now.AddDays(1), Cache.NoSlidingExpiration);
}
}
return UserExtensions.GetModifiedUsers(users);
}
catch (Exception ex)
{
throw ex;
}
}
}
//In Unit Tests
[TestMethod]
public void SampleTestMethod()
{
SampleController_Accessor privateAcc = new SampleController_Accessor();
privateAcc.ControllerContext //Which is not availble intelliSense ???????????
}
Есть ли способ получить доступ к ControllerContext без значительного изменения контроллера в методе модульного теста?
Мне нужен ControllerContext, чтобы я мог установить макет HttpContext для контроллера
Я пытался
((SampleController)privateAcc).ControllerContext = this.GetControllerContext();
Но компилятор выдает ошибку.
Любые идеи с благодарностью.