• システム開発に関わる内容をざっくりと書いていく

Moqを使ったC#単体テスト

Moqとは?

Moqは、C#で依存関係のあるクラスやインターフェースをモックするためのオープンソースのライブラリ。テスト対象のクラスが依存しているオブジェクトを、代替として実装できる。これにより、特定の環境を作成しなくてもテスト実行を行いやすくなる。

準備

Moqを使うには、NuGetパッケージマネージャを使用してMoqをインストール。

Install-Package Moq

実装例

インターフェース

public interface IUserRepository
{
    User GetUserByUsername(string username);
}

テスト実装

using Moq;
using Xunit;

public class Tests
{
    [Fact]
    public void Sample()
    {
        // Arrange
        var mockUserRepository = new Mock<IUserRepository>();
        mockUserRepository.Setup(repo => repo.GetUserByUsername("testuser"))
            .Returns(new User { Username = "testuser", Password = "password123" });
        var authService = new AuthService(mockUserRepository.Object);

        // Act
        var result = authService.Login("testuser", "password123");

        // Assert
        Assert.True(result);
    }
}