Было решено. В электронной таблице поле Est Extended Cost должно быть «Пользовательским». В этом случае потребуется 2 обновления: одно до нуля, а другое - в соответствии со средней стоимостью. Спасибо всем.
Вам нужно смоделировать ControllerContext, HttpContextBase и, наконец, IPrincipal, чтобы смоделировать свойство пользователя на Controller. Используя Moq (v2), что-то вроде следующего должно работать:
[TestMethod]
public void HomeControllerReturnsIndexViewWhenUserIsAdmin() {
var homeController = new HomeController();
var userMock = new Mock<IPrincipal>();
userMock.Expect(p => p.IsInRole("admin")).Returns(true);
var contextMock = new Mock<HttpContextBase>();
contextMock.ExpectGet(ctx => ctx.User)
.Returns(userMock.Object);
var controllerContextMock = new Mock<ControllerContext>();
controllerContextMock.ExpectGet(con => con.HttpContext)
.Returns(contextMock.Object);
homeController.ControllerContext = controllerContextMock.Object;
var result = homeController.Index();
userMock.Verify(p => p.IsInRole("admin"));
Assert.AreEqual(((ViewResult)result).ViewName, "Index");
}
Тестирование поведения, когда пользователь не является администратором, так же просто, как изменение ожидания, установленного в объекте userMock, для возврата false.