Это один из способов сделать это. Я обычно высмеиваю эти вещи, меняя правила: я не хочу знать о HttpRequest
или его родственниках в моих тестах. Вместо этого я спрашиваю: где я могу получить имя пользователя, вошедшего в систему, если я решу?
И это было бы ICallerContext
или каким-либо другим лучшим именем, которое мы можем придумать. Тогда я вместо этого высмеиваю этот интерфейс.
Мой контроллер должен ссылаться на новую зависимость:
public class MyController
{
public MyController(ICallerContext caller) {...}
}
Мой тест должен передать проверенный экземпляр контроллеру:
var caller = new Mock<ICallerContext>();
var controller = new MyController(caller.Object);
caller.Setup(c => c.LogonUserName).Returns("TestUserName");
controller.DoTheMagic();
//Assertion(s) goes here...