Как Moq DataLakeServiceClient в.Net core

#c# #asp.net-core #nunit #azure-data-lake

#c# #asp.net-core #nunit #azure-озеро данных

Вопрос:

У меня есть приложение .NET Core, в котором у меня есть метод, который будет подключаться к озеру данных Azure:

 public DataLakeServiceClient GetDataLakeServiceClient(string StorageAccount)
{
    string clientId = _authenticationConfig.ClientId.Substring(6, _authenticationConfig.ClientId.Length - 6);
    TokenCredential credential = new ClientSecretCredential(
        _authenticationConfig.TenantId, clientId, _authenticationConfig.ClientSecret, new TokenCredentialOptions());

    string dfsUri = "https://"   StorageAccount   ".dfs.core.windows.net";

    DataLakeServiceClient dataLakeServiceClient = new DataLakeServiceClient(new Uri(dfsUri), credential);
    return dataLakeServiceClient;
}
  

Вот как я это использую:

 DataLakeServiceClient dataLakeServiceClient = _azureDataFactoryRepository.GetDataLakeServiceClient(_azureStorageClient.AzureStorageAccount02Value);
  

Я пытаюсь написать модульный тестовый пример, в котором я пытаюсь moq GetDataLakeServiceClient :

 _azureDataFactoryRepository.Setup(x => x.GetDataLakeServiceClient(It.IsAny<string>())).Returns();
  

В приведенном выше коде он должен вернуться DataLakeServiceClient , но я изо всех сил пытаюсь, как я могу это сделать.

Я также не вижу никакого метода IDataLakeServiceClient .

Может кто-нибудь помочь мне настроить вышеуказанный метод?

Комментарии:

1. @Niranjaongodbole Почему бы вам просто не вернуться с новым DataLakeServiceClient , например, так: .Returns(new DataLakeServiceClient()) ? В документации говорится, что его конструктор без параметров предназначен для издевательства.

Ответ №1:

DataLakeServiceClient это abstract класс, поэтому вы можете просто издеваться над этим и вводить этот макет в макет более высокого уровня. Итак, вы хотите что-то вроде:

 var moqDataLakeServiceClient = new Mock<DataLakeServiceClient>();
_azureDataFactoryRepository
             .Setup(x => x.GetDataLakeServiceClient(It.IsAny<string>()))
            .Returns(moqDataLakeServiceClient.Object);
  

Я не уверен, какой клиент-макет вы используете, поэтому в приведенном выше примере используется Moq.