我一直在看this Stackoverflow的問題,並已答案實施。它工作得很好,直到我用下面列出的幫助方法調用HtmlHelper.Partial。我知道這可能不是最好的代碼,但是直到我可以重構更多的應用程序。它拋出的錯誤是如何測試調用部分的HtmlHelpers?
上一個方法'ViewContext.get_TempData();'需要返回值或拋出異常。
我缺少嘲弄的東西,還是有更好的方式來呈現usercontrol?
編輯好吧我確實錯過了一些東西,我沒有打電話給mocks.Replay()。現在有另一個錯誤,它要在routeData ... progress中命名爲controller。
編輯#2澄清我試圖嘲弄調用HtmlHelper.Partial(partialPath,型號),我只是想,要返回任何partialPath我送的,我想,至少不會爆破。我確實發現這個頁面http://andrevianna.com/blog/?p=8這是非常有益的,我幾乎得到的東西工作。這是也有幫助http://farm-fresh-code.blogspot.com/2009/10/mocking-htmlhelper-class-with.html
public static string RenderRateDetails(this HtmlHelper html, string partialPath, RatesViewData model, RateDetailType type)
{
switch (type)
{
case RateDetailType.AR:
if (model.ExistingRateDetailAR != null)
return html.Partial(partialPath, model).ToString();
break;
case RateDetailType.AP:
if (model.ExistingRateDetail != null)
return html.Partial(partialPath, model).ToString();
break;
}
return string.Empty;
}
建議重構:您可能可以通過使用繼承來簡化您的場景。如果您有一個RatesViewDataBaseModel和兩個子類,RatesViewDataAPModel和RatesViewDataARModel,您可以基於'is'運算符執行測試,而不是目前更復雜的兩階段測試。 –
這是前進的想法,但視圖模型如此之大,控制器如此之大,我不確定它在改變它的意義。 – nportelli
你也提到過mock有問題,你究竟想在這裏測試什麼?如果我們看到你的單元測試可能會有所幫助。 –