Page History
...
- ORM접근 레파지토리를 통해 개발에서 OOP를 이용하여 DB를 빠르게 이용 ( 사용준비끝)
- 모델은 DTO(POCO)로 정의되어 분리되어있기때문에 , Dapper나 스토어프로시저 기반으로 교체하더라도~ 모델은 그대로 재사용가능
유닛테스트를 통한 개발 가속화
- Repository/Service를 구현하기 전 단계에서 DB Context TEST를 OOP를 통해 할수 있으며
DB 개발을 가속화하는 유닛테스트 샘플
Code Block | ||||
---|---|---|---|---|
| ||||
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}");
}
}
}
} |