.NET 6 Moq範例

目的

進行單元測試時,可以隔絕依賴的項目。

建立新專案

設定新的專案

其他資訊

建立新的類別庫

NuGet加入套件

針對xUnitExample.Tests加入相關套件

  • xunit

  • xunit.runner.visualstudio

  • Microsoft.NET.Test.Sdk

  • coverlet.collector

  • Moq

針對MoqExample.Tests類別庫加入參考

新增WeatherForecastControllerTests.cs類別檔

編輯WeatherForecastControllerTests.cs類別檔

測試都會分三個階段

  • Arrange:準備階段,包含初始化相關資料

  • Act:執行測試方法後所取得的結果

using Microsoft.Extensions.Logging;
using Moq;
using MoqExample.Controllers;
using Xunit;
namespace MoqExample.Tests.Controllers {
  public class WeatherForecastControllerTests {
    [Fact]
    public void Get() {
      //Arrange
      //透過mock將外界的介面包起來
      var MockLogger = new Mock<ILogger<WeatherForecastController>>();
      //當成物件傳入controller,代替實際的介面
      var Controllers = new WeatherForecastController(MockLogger.Object);
      //Act
      //執行要測試的函式
      var Results = Controllers.Get();
      //Assert
      //確認結果不為null
      Assert.NotNull(Results);
      //確認結果數量等於5
      Assert.Equal(5, Results.Count());
    }
  }
}

執行結果

點選測試>執行所有測試

參考

Moq-Quickstart

範例檔

GitHub

Last updated