C#: 단위 테스트 Azure 파일 SDK
샘플 코드
Azure Files에서 모든 공유 이름을 반환하는 아래와 같은 C# 코드가 있다고 가정해 보겠습니다. 여기서는 ShareServiceClient에 DI를 사용합니다. 코드가 아주 간단하죠?
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
namespace AzureFilesSample;
public class AzureFileSampleService
{
private readonly ShareServiceClient shareServiceClient;
public AzureFileSampleService(ShareServiceClient shareServiceClient)
{
this.shareServiceClient = shareServiceClient;
}
public async Task<List<string>> GetFileSharesAsync()
{
List<string> fileShares = new List<string>();
await foreach (ShareItem item in shareServiceClient
.GetSharesAsync()
.WithCancellation(CancellationToken.None))
{
fileShares.Add(item.Name);
}
return fileShares;
}
}
단위 테스트
위 코드에 대한 단위 테스트를 작성하려면 ShareServiceClient를 모의해야 합니다. 그러나 내부 생성자만 있기 때문에 ShareItem을 인스턴스화할 수 없습니다. github에서 소스 코드를 검색한 후 관련 모델을 인스턴스화할 수 있는 클래스ShareModelFactory를 찾았습니다.
이것은 단위 테스트 코드입니다. 나는 xUnit과 moq 라이브러리를 사용합니다.
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
namespace AzureFilesSample;
public class AzureFileSampleService
{
private readonly ShareServiceClient shareServiceClient;
public AzureFileSampleService(ShareServiceClient shareServiceClient)
{
this.shareServiceClient = shareServiceClient;
}
public async Task<List<string>> GetFileSharesAsync()
{
List<string> fileShares = new List<string>();
await foreach (ShareItem item in shareServiceClient
.GetSharesAsync()
.WithCancellation(CancellationToken.None))
{
fileShares.Add(item.Name);
}
return fileShares;
}
}
위 코드에 대한 단위 테스트를 작성하려면 ShareServiceClient를 모의해야 합니다. 그러나 내부 생성자만 있기 때문에 ShareItem을 인스턴스화할 수 없습니다. github에서 소스 코드를 검색한 후 관련 모델을 인스턴스화할 수 있는 클래스ShareModelFactory를 찾았습니다.
이것은 단위 테스트 코드입니다. 나는 xUnit과 moq 라이브러리를 사용합니다.
[Fact]
public async Task Test1()
{
Mock<ShareServiceClient> mockedShareServiceClient = new Mock<ShareServiceClient>();
ShareItem shareItem1 = ShareModelFactory.ShareItem("name1", ShareModelFactory.ShareProperties());
ShareItem shareItem2 = ShareModelFactory.ShareItem("name2", ShareModelFactory.ShareProperties());
ShareItem[] pageValues = new[] { shareItem1, shareItem2 };
Page<ShareItem> page = Page<ShareItem>.FromValues(pageValues, default, new Mock<Response>().Object);
Pageable<ShareItem> pageable = Pageable<ShareItem>.FromPages(new[] { page });
AsyncPageable<ShareItem> asyncPageable = AsyncPageable<ShareItem>.FromPages(new[] { page });
mockedShareServiceClient.Setup(x => x.GetSharesAsync(ShareTraits.None, ShareStates.None, null, CancellationToken.None))
.Returns(asyncPageable);
AzureFileSampleService service = new AzureFileSampleService(mockedShareServiceClient.Object);
var results = await service.GetFileSharesAsync();
Assert.Equal("name1", results.First());
Assert.Equal("name2", results.Last());
}
요약
분명히 Azure Mocking은 단위 테스트를 위한 훌륭한 리소스이지만 때때로 단위 테스트를 작성하는 방법을 파악하려면 소스 코드를 확인해야 합니다.
참조
Async Enumerables
Reference
이 문제에 관하여(C#: 단위 테스트 Azure 파일 SDK), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/kenakamu/c-unit-testing-azure-files-sdk-32p8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Async Enumerables
Reference
이 문제에 관하여(C#: 단위 테스트 Azure 파일 SDK), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kenakamu/c-unit-testing-azure-files-sdk-32p8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)