簡體   English   中英

單元測試C#MOQ依賴注入

[英]Unit Test C# MOQ dependecy injection

我是單元測試的新手。 嘗試為遺留代碼集成單元測試。 要最小化該類的相同方法,我需要注入接口還是有其他選擇。

如果將接口注入構造函數是唯一的方法,則如何為現有代碼定義默認構造函數。 例:

    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();
    }

對於上面的代碼,我能夠執行單元測試。 但是,如果我瀏覽該方法(手動測試操作),則會失敗,未設置對象引用。 因為對象是空的。 如何解決這個問題?

我也在很多地方使用FillViewBag,那些地方我現在不想基於接口更改呼叫。 請指教。

您可以模擬IController接口,然后將模擬對象傳遞到構造函數中。

var mockController = new Mock<IController>();

var controller = new Controller(mockController.Object);

您還需要設置要讓模擬的FillViewBag執行的操作:

var mockController.Setup(c => c.FillViewBag).Callback(() => do something here);

Moq 快速入門中的大量信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM