在編寫“驗證”測試方法時顯示“未執行調用”錯誤

我們有一個服務正在另一個服務中使用:

namespace ConsoleCalculator.Services
{
    public interface ICalculatorService
    {
        int GetLineCount(string inputLineCount);
    }
}

namespace ConsoleCalculator.Services
{
    public class CalculatorService : ICalculatorService
    {
        private readonly ICalculatorValidationService _calculatorValidationService;

        public CalculatorService(ICalculatorValidationService calculatorValidationService)
        {
            _calculatorValidationService = calculatorValidationService;
        }

        public int GetLineCount(string inputLineCount)
        {
            _calculatorValidationService.ValidateLineCount(inputLineCount);
            return Convert.ToInt32(inputLineCount);
        }
    }
}

現在,我們需要為所需服務編寫一個測試:

namespace ConsoleCalculator.Test.Services
{
    public class CalculatorServiceTest
    {
        private Mock<ICalculatorService> _calculatorService = new Mock<ICalculatorService>();
        private Mock<ICalculatorValidationService> _valculatorValidationService = new Mock<ICalculatorValidationService>();
        public CalculatorServiceTest()
        {
            _valculatorValidationService
              .Setup(q => q.ValidateLineCount(It.IsRegex("[^0-9]")))
              .Throws(new Exception());

            _calculatorService
                .Setup(q => q.GetLineCount(It.IsRegex("[^0-9]")))
                .Throws(new Exception());
        }


        [Fact]
        public void When_Input_Not_A_Number_Should_Return_Exception()
        {
            Assert.Throws<Exception>(() => _calculatorService.Object.GetLineCount("123a"));
        }

        [Fact]
        public void When_Call_Method_Should_Call_Exactaly_One_ValidateLineCount_Method()
        {
            _calculatorService.Object.GetLineCount(It.IsAny<string>());
            _valculatorValidationService.Verify(x => x.ValidateLineCount(It.IsAny<string>()), Times.Once);
        }
    }
}

編寫第二個測試的目的是確保我的測試服務被調用一次。但在運行測試時,我看到以下錯誤:

Moq.MockException:需要對模擬進行一次調用,但調用次數為0次:x=>x.ValidateLineCount(It.IsAny())

? 最佳回答:

根據您給出的moq,將不會調用驗證服務方法,因為調用GetLineCount時拋出異常,因此測試失敗。

而不是設置此最小起訂量

_calculatorService
                .Setup(q => q.GetLineCount(It.IsRegex("[^0-9]")))
                .Throws(new Exception());

試試這個

[Fact]
public void When_Call_Method_Should_Call_Exactaly_One_ValidateLineCount_Method()
{
         
var calSrvc = new CalculatorService(_valculatorValidationService.Object);
 
calSrvc.Object.GetLineCount(It.IsAny<string>());
   
_valculatorValidationService.Verify(x => x.ValidateLineCount(It.IsAny<string>()), Times.Once);
}
主站蜘蛛池模板: 久久人妻无码一区二区 | 国产一区二区三区免费观在线 | 久久精品日韩一区国产二区 | 免费在线视频一区| 国产激情一区二区三区 | 日韩国产精品无码一区二区三区| 亚洲欧美成人一区二区三区| 国产激情无码一区二区app| 国产大秀视频一区二区三区| 久久久久人妻精品一区三寸| 久久精品午夜一区二区福利 | 免费看AV毛片一区二区三区| 熟女精品视频一区二区三区| 国产精品一区二区三区99| 又紧又大又爽精品一区二区| 冲田杏梨AV一区二区三区| 久久久久99人妻一区二区三区| 人妻内射一区二区在线视频| 精品视频一区在线观看| 在线视频亚洲一区| 色天使亚洲综合一区二区| 中文乱码人妻系列一区二区| 无码一区二区三区| 精品亚洲AV无码一区二区| 中文字幕aⅴ人妻一区二区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 久久精品国产亚洲一区二区三区| 国产麻豆剧果冻传媒一区| 国产品无码一区二区三区在线| 亚洲午夜一区二区电影院| 精品乱码一区二区三区四区| 亚洲一区在线视频| 无码一区二区三区爆白浆| 另类ts人妖一区二区三区| 天堂一区二区三区精品| 国产一区中文字幕在线观看 | 91一区二区视频| 麻豆AV天堂一区二区香蕉 | 变态调教一区二区三区| 三上悠亚精品一区二区久久| 亚洲色大成网站www永久一区|