Так что я пытаюсь проверить случай, когда этот метод будет возвращать «ManagerEventsIndex»:Как издеваются контроллер, который реализует интерфейс
public ActionResult Index()
{
if (this.CurrentUser != null)
{
if (this.CurrentUser.Role.Name == AvailableRoles.GameManager)
{
var model = new GameManagerEventsIndexModel();
model.NumLocationsOfCurrentUser = this._customerLocationDataProvider.GetAllForUserId(CurrentUser.Id)
.Where(x => x.Active == true)
.Count();
return View("ManagerEventsIndex", model);
}
else
{
return View();
}
}
else
return View("PublicIndex");
}
Но этот контроллер реализует другой контроллер ApplicationController, как так: EventsController: ApplicationController, и это объект CurrentUser в контроллере приложения, который мне нужно высмеять, чтобы проверить это ... вот мой метод тестирования. Благодарю.
[TestMethod]
public void AssertGameManagerRoleReturnsGameManagerIndex()
{
// Arrange
//eventsController = new EventsController(eventDataProvider.Object, playerEventDataProvider.Object, userDataProvider.Object,
tokenAuthent.Object, dataContext.Object, customerLocationDataProvider.Object);
var user = new Mock<User>();
var role = new Mock<Role>();
role.SetupSet(x => x.Name = "Ted");
user.SetupSet(x => x.Role = role.Object);
//?? var appController = new Mock<ApplicationController>();
//?? appController.SetupSet(x => x.User = user);
// var mController = new Mock<EventsController>();
// Act
var result = (ViewResult) eventsController.Index();
// Assert
Assert.AreEqual("ManagerEventsIndex", result.ViewName);
}
хм, так что нет способа сделать контрольный контроллер и в то же время указать интерфейс имитации, который он должен реализовать? – 1Canuck16
@mapleafman Я не думаю, что moq поддерживает что-то подобное. Вы можете либо издеваться над целым интерфейсом или целым экземпляром (не присоединяться к ним вместе). я полагаю, что моя точка зрения заключается в том, что если вы чувствуете, что вам приходится делать сумасшедшие вещи в своих тестах, чтобы создать сценарий, то обычно это запах кода, предполагающий, что, возможно, вы не нарушили фактический SUT в правильном направлении –
спасибо, что я ценю это , и я согласен, просто работая над этим с кем-то другим, и это в основном их дизайн, просто пытался понять, есть ли что-то, что можно было бы сделать, спасибо – 1Canuck16