簡體   English   中英

Moq.MockException:對模擬的預期調用恰好 1 次,但為 0 次:x => x.Init()

[英]Moq.MockException: Expected invocation on the mock exactly 1 times, but was 0 times: x => x.Init()

我有這個方法來驗證是否調用了一個方法。 我在 C# 中使用 xUnit 和 MOQ。

    [Fact]
    public void VerifyIfInitCalled()
    {
        // Arrange
        var mock = new Mock<ICal>();

        var cal = new Cal(mock.Object);

        // Act
        cal.Init();

        // Assert
        mock.Verify(x => x.Init(), Times.Exactly(1));
    }

對於我的 Cal class

public class Cal : ICal
{
    private ICal _cal;

    public Cal(ICal cal)
    {
        _cal = cal;
    }

    public void Init()
    {
        Console.WriteLine("Init called"); ;
    }
}

但是,我運行單元測試,它失敗並出現錯誤Moq.MockException: Expected invocation on the mock exactly 1 times, but was 0 times: x => x.Init()盡管我調用了Init()方法。

您需要修改您的Init()以使您的斷言正確

public void Init()
{
    _cal.Init();
    Console.WriteLine("Init called"); ;
}

並且您的接口ICal需要有一個Init()成員。

但顯然你有一個概念問題,你正在實現ICal並將其傳遞給 class 構造函數。!

更新

單元測試特定於實現,因此您的測試方法需要測試Cal class。

如果您的 class 調用其他服務並且您需要模擬並設置方法調用以獲得特定結果,您將使用moq

暫無
暫無

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

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