Mockaroo와 Entity framework를 사용하여 .NET 애플리케이션용 샘플 데이터를 시드하기

발행: (2025년 12월 15일 오후 10:38 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

소개

애플리케이션을 철저히 테스트하려면 다양한 샘플 데이터가 필요하지만, 이를 수동으로 만들기는 시간이 많이 소요됩니다. Mockaroo는 현실적인 테스트 데이터를 빠르게 생성해 주어 이 과정을 단순화합니다. 이 튜토리얼에서는 Mockaroo와 Entity Framework Core를 함께 사용해 .NET Web API 프로젝트에 샘플 데이터를 시드(seeding)하는 방법을 알아봅니다.

Visual Studio Community Edition이 필요합니다. 여기에서 다운로드하세요.

Mockaroo에서 데이터셋 만들기

  1. Mockaroo 웹사이트에 접속합니다.
  2. 데이터셋 필드를 정의합니다 (아래 예시 스크린샷 참고).
    Mockaroo 설정하기
  3. 출력 형식으로 JSON을 선택합니다 (EF Core를 통해 데이터를 시드할 것이기 때문입니다).
  4. GENERATE DATA 버튼을 클릭하고 생성된 파일을 다운로드합니다 (예: MOCK_DATA.json).

Web API 프로젝트 만들기

  1. Visual Studio를 열고 → Create a new project.
  2. ASP.NET Core Web API를 검색하고 선택한 뒤 Next를 클릭합니다.
  3. 프로젝트 이름을 지정합니다 (예: Mockaroo_Test), 대상 프레임워크를 .NET 10으로 선택하고 기본 옵션을 유지한 뒤 Create를 클릭합니다.
    Web API 프로젝트 설정하기

필요한 패키지 설치

Package Manager Console을 열고 다음을 실행합니다:

Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.InMemory
Install-Package Microsoft.EntityFrameworkCore.Design

모델 정의

Mockaroo에서 정의한 필드와 일치하도록 Club 클래스를 만듭니다:

using System.Text.Json.Serialization;

public class Club
{
    public int Id { get; set; }

    [JsonPropertyName("club_name")]
    public string ClubName { get; set; }

    [JsonPropertyName("country_location")]
    public string CountryLocation { get; set; }

    [JsonPropertyName("stadium_capacity")]
    public int StadiumCapacity { get; set; }

    [JsonPropertyName("manager_name")]
    public string ManagerName { get; set; }

    [JsonPropertyName("founded_year")]
    public int FoundedYear { get; set; }

    [JsonPropertyName("league_affiliation")]
    public string LeagueAffiliation { get; set; }

    [JsonPropertyName("captain_name")]
    public string CaptainName { get; set; }

    [JsonPropertyName("jersey_color")]
    public string JerseyColor { get; set; }

    [JsonPropertyName("average_attendance")]
    public int AverageAttendance { get; set; }

    [JsonPropertyName("major_rival")]
    public string MajorRival { get; set; }
}

DbContext 만들기

새 클래스 AppDbContext를 추가합니다:

using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions options) : base(options) { }

    public DbSet<Club> Clubs { get; set; }
}

인‑메모리 데이터베이스 구성

Program.cs에서 컨텍스트를 등록합니다:

builder.Services.AddDbContext<AppDbContext>(options =>
{
    options.UseInMemoryDatabase("MockarooDemoDb");
});

데이터 시드하기

  1. 다운로드한 MOCK_DATA.json 파일을 프로젝트 폴더(예: Web API 프로젝트 루트)로 이동합니다.
    다운로드한 Mockaroo 파일을 프로젝트 폴더로 이동하기

  2. JSON을 읽어 데이터베이스에 채워 넣는 SeedData 클래스를 만듭니다:

using System.Text.Json;

public class SeedData
{
    public static async Task SeedAsync(AppDbContext context)
    {
        if (context.Clubs.Any()) return;

        var json = await File.ReadAllTextAsync("MOCK_DATA.json");
        var clubs = JsonSerializer.Deserialize<List<Club>>(json);

        context.Clubs.AddRange(clubs!);
        await context.SaveChangesAsync();
    }
}
  1. Program.cs에서 앱을 빌드한 뒤 시드 로직을 호출합니다:
var app = builder.Build();

using (var scope = app.Services.CreateScope())
{
    var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
    await SeedData.SeedAsync(db);
}

이제 애플리케이션을 실행하면 인‑메모리 데이터베이스 MockarooDemoDb가 모의 데이터로 채워집니다.

시드된 데이터 확인하기

클럽 정보를 API 엔드포인트로 노출하는 컨트롤러를 생성합니다.

using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;

[ApiController]
[Route("api/[controller]")]
public class ClubController : ControllerBase
{
    private readonly AppDbContext _context;

    public ClubController(AppDbContext context)
    {
        _context = context;
    }

    [HttpGet]
    public async Task<ActionResult<List<Club>>> Get()
    {
        var clubs = await _context.Clubs.ToListAsync();
        return Ok(clubs);
    }
}

Swagger

Swagger가 아직 설정되지 않았다면, 여기 가이드를 참고하세요.

프로젝트를 실행하고 Swagger UI 페이지로 이동합니다. GET /api/Club 엔드포인트를 실행하면 시드된 클럽 데이터를 확인할 수 있습니다.
시드된 데이터 시각화하기

전체 프로젝트 소스

전체 프로젝트는 GitHub에서 확인할 수 있습니다.

Happy coding!

Back to Blog

관련 글

더 보기 »

리팩토링 없이 레거시 Laravel 코드 테스트

실제 PHP 프로젝트를 위한 실용적인 전략 레거시 코드베이스는 삶의 일부입니다. 대부분 우리는 그린필드 프로젝트에 참여하지 않습니다. 우리는 애플리케이션을 물려받습니다.