[c#] C# 유닛 테스트 모킹

유닛 테스트를 작성할 때 외부 의존성을 테스트 하는 것은 까다로운 부분입니다. 이를 위해 모킹(Mocking)을 사용하여 외부 리소스나 의존성이 있는 부분을 가짜 객체로 대체하여 테스트를 용이하게 할 수 있습니다.

Moq를 사용한 모킹

Moq는 C#에서 모킹을 하는 데 사용되는 인기 있는 라이브러리입니다. 다음은 Moq를 사용하여 모킹하는 간단한 예제입니다.

// 인터페이스 정의
public interface IDataRepository
{
    string GetData();
}

// 모킹
var mockRepository = new Mock<IDataRepository>();
mockRepository.Setup(x => x.GetData()).Returns("모킹 데이터");

// 모킹된 메소드 호출
var result = mockRepository.Object.GetData();

위 코드에서 IDataRepository 인터페이스를 모킹하여 GetData 메소드가 “모킹 데이터”를 반환하도록 설정한 후, mockRepositoryGetData를 호출하여 결과를 얻을 수 있습니다.

실제 활용 예제

유닛 테스트에서 모킹은 외부 서비스 호출, 데이터베이스 액세스 및 파일 시스템 접근과 같이 외부 리소스에 대한 의존성을 가진 경우에 매우 유용합니다. 모킹을 사용하여 이러한 의존성을 가진 코드를 테스트하는 것은 테스트의 안정성을 크게 높일 수 있습니다.

이러한 유닛 테스트 모킹 기술은 좀 더 넓은 개념의 의존성 주입(Dependency Injection)과 함께 사용되어 의존성을 관리하고 테스트 가능한 코드를 작성하는 데 도움이 됩니다.

결론

C# 유닛 테스트에서 모킹은 외부 의존성을 가진 부분을 효과적으로 테스트하는 데 귀중한 기술입니다. Moq 라이브러리를 사용하여 간편하게 모킹을 할 수 있으며, 외부 리소스에 대한 의존성을 갖는 코드를 안정적으로 테스트할 수 있게 도와줍니다.

참고 자료