1
我是單元測試新手。嘗試整合遺留代碼的單元測試。 要moq類的相同的方法,我需要注入接口或有任何其他選項。單元測試C#MOQ依賴注入
如果向構造函數的接口注入是唯一的方法,那麼如何定義現有代碼的默認構造函數。 實施例:
private IController _iController;
public Controller(IController iController)
{
_iController= iController;
}
public ActionResult ActualMethod()
{
_iController.FillViewBag();
return View();
}
public void UnitTest()
{
var i = new Mock<IController>();
i.Setup(d => d.FillViewBag());
var controller = new Controller(i.Object);
controller.ActualMethod();
}
對於上述代碼我能夠進行單元測試。 但是,如果我瀏覽的方法(手動測試行動)它是失敗的對象ref沒有設置。因爲對象是空的。如何解決這個問題?
另外我在很多地方使用FillViewBag,那些地方我現在不想改變基於接口的調用。請指教。
非常感謝您的答覆。我已經提到了我的問題中的相同內容。我在模擬中沒有任何問題。但在應用程序中,我正在使用函數調用_interface.FillViewBag()這是給對象引用沒有設置錯誤。 (如果我運行該項目 - 不單位測試)。基本上我會通過傳遞模擬接口來從單元測試中調用控制器類。這工作正常。如果我想調用控制器類的方法應該做什麼。請指教!! – Antony
https://kakimotonline.com/2011/02/13/tdd-in-asp-net-mvc-applications-with-moq-framework/這是我如何做嘲笑。但問題是,我的菜單路由到ProductController/List。在調用它時由於構造器參數無效而失敗。那麼我是否需要提供額外的默認構造函數而沒有任何參數?如果我這樣做,我正在獲取對象引用錯誤。請指教 – Antony