Проблема издевательства над модульным тестированием
ниже приведен метод, который я пытался протестировать, но он не работает для сотрудника.Текущий сотрудник.IsManager это логическое значение извлекается из вложенного класса который зависит от сеанса поэтому когда я запускаю модульный тест для этого он терпит неудачу потому что нет сеанса созданного во время выполнения модульного теста поэтому я попытался издеваться над объектом
public ActionResult IndexCompleted(PlanModel model) { int PlanID = model.Plan.PlanID; ViewBag.Title = "Plan Number: " + PlanID; //Only managers can access the plans (the bride now works at the chapel) if ((PlanID == 387484 || PlanID == 765675 || PlanID == 872095 || PlanID == 900535) && !Employee.CurrentEmployee.IsManager) { return Content("Unauthorized"); } return View(model); }
Что я уже пробовал:
я пытаюсь создать макет объекта но не могу его создать потому что у меня нет интерфейса
[Test] public void FetchingPlanModelObjectIfYouAreManagerElseUnauthorized() { PlanController planController = new PlanController(); PlanModel planmodel = new PlanModel() { Plan = new LittleChapel.Plan() { PlanID = 387484 } }; Mock<iemployee> objMock = new Mock<iemployee>(); objMock.Setup(x => Employee.CurrentEmployee.IsManager).Returns(true); //objMock.SetupProperty(x => x.IsManager,true); //objMock.Setup(x=>x.IsManager).Returns(true); var plan = planController.IndexCompleted(planmodel) as ViewResult; Assert.AreEqual(planmodel, plan.ViewData.Model); }
Bernhard Hiller
То есть интерфейса "iemployee" не существует? Или что-то еще? Расскажите нам дословное сообщение об ошибке, и это ошибка времени компиляции или ошибка времени выполнения?
Scyldshefing
Учитывая, что Employee реализует IEmployee и оба эти класса определены, как вы вводите макет объекта (objMock. Object) в тестируемый код? Ваш фрагмент кода не показывает объявление объекта Employee в тестируемом коде.
Чтобы сделать что-то подобное (инъекция зависимостей) Я использую Microsoft Unityframework (https://msdn.microsoft.com/en-us/library/ff647202.aspx )