Я думаю, что пример, приведенный в разделе «Свежий код фермы», - правильный путь, вы не можете напрямую смоделировать HtmlHelper, но вы можете создать экземпляр, где все его зависимости будут смоделированы.
Когда вы вызываете код html.Partial(partialPath, model).ToString()
, HtmlHelper вызывает свойства и методы для зависимостей, которые вы высмеивали, и вы получаете ошибки, если они не возвращают разумные значения по умолчанию.
В этом случае похоже, что свойство TemplateData смоделированного объекта ViewContext было вызвано, и я полагаю, что оно вернуло значение null, следовательно:
Previous method 'ViewContext.get_TempData();' requires a return value or an exception to throw.
После того, как вы смоделируете это свойство, вы сможете обойти эту ошибку, но, возможно, вам придется смоделировать еще несколько вещей, прежде чем все заработает.
Это может сэкономить вам время, чтобы взглянуть на исходный код MVC, чтобы увидеть, что вызывается в методе Partial. Вы можете получить это здесь http://aspnet.codeplex.com/releases/view/58781.
EDIT
КСТАТИ. Свойство TempData возвращает System.Web.Mvc.TempDataDictionary. Насмешка над свойством вернуть пустой экземпляр одного из них должна решить непосредственную проблему.