Макет встроенного класса AWS Logs клиентского компоновщика - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь смоделировать и использовать встроенный класс AWS.Но постоянное получение разных ошибок.

Пока я тестировал целый метод, я смог смоделировать все остальные, но когда дело дошло до формирования учетных данных, с использованием когда тогда тоже выдается исключение.

 BasicAWSCredentials basic = new BasicAWSCredentials(clientToken, clientSecret);
  //Forming AWSLogs
 AWSLogs awsLogsClient = AWSLogsClientBuilder
            .standard()
            .withCredentials(new AWSStaticCredentialsProvider(basic))
            .withRegion(region)
            .build();

 DescribeLogStreamsRequest logStreamsRequest = new 
 DescribeLogStreamsRequest().withLogGroupName("SomeLogGroupName");

 //This is where I am getting error while mocking. But this same exectes properly while running with actual credentilas. But while mocking it fails       
 DescribeLogStreamsResult describeLogStreamsResult = awsLogsClient.describeLogStreams(logStreamsRequest);

Сообщение об ошибке при выполнении теста mokito Junit.

Caused by: com.amazonaws.services.logs.model.UnrecognizedClientException: The security token included in the request is invalid. (Service: AWSLogs; Status Code: 400; Error Code: UnrecognizedClientException; Request ID:

Так будет полезно, если тест Mockito был создан только для вышеуказанного кода.Я совершенно новичок в Мокито

1 Ответ

0 голосов
/ 29 апреля 2019

Поскольку вы пишете модульный тест, вы не хотите совершать реальный http-вызов с использованием awsLogsClient, вместо этого вы хотите создать макет для этого клиента, чтобы вы могли контролировать, какой ответ вы получите. Тем самым вы можете проверить свой код на предмет успешных и неудачных случаев. Еще одна полезная вещь - это то, что ваш модульный тест будет выполняться намного быстрее и без подключения к Интернету.

Я бы начал с насмешек над интерфейсом: https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/logs/AWSLogs.html

Но вам понадобится какой-то механизм для внедрения этой зависимости в ваш производственный код.

...