Agarwal1984 Ответов: 1

Системы.исключение NullReferenceException ссылка на объект не установлено на экземпляр объекта.' системы.веб.свойство HttpContext.тока.вам возвращается значение null. Во время модульного тестирования в MVC.


Привет,

Когда я запускаю свой модульный тестовый проект,поэтому он получает ошибку от приложения mvc"
System.NullReferenceException: 'Object reference not set to an instance of an object.'

System.Web.HttpContext.Current.get returned null.
"

Я пробовал в приложении MVC.
Пожалуйста, помогите мне.

заранее спасибо.

Анкит Агарвал
инженер-программист

Что я уже пробовал:

//Arrange
            GCopaDimensionsController gCopaDimensionsController = new GCopaDimensionsController();
            //gCopaDimensionsController.ControllerContext = context.Object;

            //Act
            ViewResult result = gCopaDimensionsController.Index() as ViewResult;
            //Assert
            Assert.AreEqual("Manage Global Copa Dimension", gCopaDimensionsController.Session["Title"]);
            //Assert.Fail();

1 Ответов

Рейтинг:
1

F-ES Sitecore

Вы получаете ошибку, но не говорите нам, на какой линии она находится, поэтому я не уверен, какой помощи вы ожидаете. Однако из сообщения об ошибке кажется, что где-то в коде, который вы еще не опубликовали, вы используете "System.Web.HttpContext.Current", однако ваш модульный тест выполняется в контексте вашего тестового бегуна, а не веб-сервера, поэтому HttpContext отсутствует .Current вернет null.

Не весь код является модульным тестируемым, чтобы сделать его тестируемым, вы должны написать его таким образом, чтобы он не зависел непосредственно от внешних сред, таких как базы данных, файлы, контекст http и т. д.

Чтобы сделать ваш код тестируемым, вам нужно будет рефакторировать его так, чтобы такие вещи, как доступ к сеансу, абстрагировались с помощью интерфейсов и инъекции зависимостей, которые позволят вашим модульным тестам имитировать сеанс для целей тестирования. Если вы загуглите "asp.net сессия модульного тестирования" вы, вероятно, найдете примеры того, что вам нужно сделать. Сделать ваш код тестируемым-задача не из простых.


Agarwal1984

На самом деле моя ошибка в моем контроллере-
Системы.Веб.Свойство HttpContext.Тока.Сессия["Название"] = "Управление Глобальным Измерением Copa";

Значение сеанса не передается в этом сеансе.