Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • ORM접근 레파지토리를 통해 개발에서 OOP를 이용하여 DB를 빠르게 이용 ( 사용준비끝)
  • 모델은 DTO(POCO)로 정의되어 분리되어있기때문에 , Dapper나 스토어프로시저 기반으로 교체하더라도~ 모델은 그대로 재사용가능


유닛테스트를 통한 개발 가속화

Image Added

  • Repository/Service를 구현하기 전 단계에서 DB Context TEST를 OOP를 통해 할수 있으며  


DB 개발을 가속화하는  유닛테스트 샘플

Code Block
languagec#
themeEmacs
using GouAPI;

using Microsoft.EntityFrameworkCore;

using Xunit.Abstractions;

namespace GouApiTest.EntityTest
{
    public class GouDbContextTest : XUnitTestBase
    {
        private GouDbContext gouDbContext;

        public GouDbContextTest(ITestOutputHelper output) : base(output)
        {
            // DbContextOptions 생성
            var options = new DbContextOptionsBuilder<GouDbContext>()
                .Options;

            // DI를 통해 GouDbContext 인스턴스 생성
            gouDbContext = new GouDbContext(options);
        }

        [Fact]
        public async Task BadgeInsertAreOK()
        {
            gouDbContext.BadgeInfos.Add(new BadgeInfo
            {
                BadgeImageUrl = "https://www.naver.com",
                BadgeName = "sam badge",
                ModAdmin = "sam",
                ModDate = DateTime.Now,
                RegDate = DateTime.Now,
                RegAdmin = "sam",
            });                
            await gouDbContext.SaveChangesAsync();
        }

        [Fact]
        public async Task BadgeSelectAreOK()
        {
            var badgeInfos = await gouDbContext.BadgeInfos.ToListAsync();
            foreach (var badgeInfo in badgeInfos)
            {
                output.WriteLine($"BadgeNo: {badgeInfo.BadgeNo}");
                output.WriteLine($"BadgeImageUrl: {badgeInfo.BadgeImageUrl}");
                output.WriteLine($"BadgeName: {badgeInfo.BadgeName}");
                output.WriteLine($"RegDate: {badgeInfo.RegDate}");
                output.WriteLine($"RegAdmin: {badgeInfo.RegAdmin}");
                output.WriteLine($"ModDate: {badgeInfo.ModDate}");
                output.WriteLine($"ModAdmin: {badgeInfo.ModAdmin}");
            }
        }

    }
}