Вы получаете MissingMethodException
, когда MOQ не может сопоставить параметры Mock<>()
с параметрами в конструкторе проверяемого класса.
Глядя на ViewContext
объясняет, почему.Существует только одна перегрузка конструктора, и это:
public ViewContext(ControllerContext controllerContext, IView view, ViewDataDictionary viewData, TempDataDictionary tempData, TextWriter writer);
Эта настройка (включая отсутствующие TextWriter
макет) должна работать:
Mock<ViewContext> mockViewContext = new Mock<ViewContext>(
new ControllerContext(
new Mock<HttpContextBase>().Object,
new RouteData(),
new Mock<ControllerBase>().Object),
new Mock<IView>().Object,
vd,
new TempDataDictionary()
new Mock<TextWriter>().Object);
PS MOQиспользует Castle Dynamic Proxy для создания ложных классов во время выполнения, отсюда и название Castle в исключении, которое вы видите.Castle Windsor использует проект Dynamic Proxy, но это совершенно разные проекты.