Sitecoe WebUtil.SessionValue Модульное тестирование - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь выполнить модульное тестирование следующего кода

var test = WebUtil.GetSessionValue("test") as ViewResult;

И я настроил свой тест следующим образом:

var session = new Moq.Mock<WebUtil>();
session.SetUp(s => s.GetSessionValue).Returns();

Я испытываю трудности с издевательством над WebUtil и установкой значения для GetSessionValue

1 Ответ

1 голос
/ 31 марта 2020

Вы не можете высмеивать WebUtil stati c методы. Вам нужна абстракция , но в данном конкретном случае введение чего-то вроде IWebUtil может показаться слишком неловким.

Лучшим решением будет использование перегруженной версии метода GetSessionValue, который получает HttpContextBase в качестве параметра:

public static object GetSessionValue(string key, HttpContextBase context) { ... }

HttpContextBase - это новая хорошо воспроизводимая версия старого HTTP-контекста stati c. Вы можете найти, как издеваться над этим здесь . После этого свойство Mocking Session должно быть простым.

...