2017-08-30 9 views
2

私はクラス内でメソッドを持っています。内部ではAmazonS3Client.javaが呼び出され、AwsCredetialsProvider.getCredentials()が呼び出されています。そのためには、私のテストクラスにAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYを設定する必要があります。私のプロジェクトでは、これらの値を環境変数に設定することはできません。mockitoを使用してAWS環境変数を設定する別の方法

私はAWSCredentialsProviderAWSCredentialsをモックしようとしており、資格情報を返すためにスタブを使用しました。しかし、それは次のようなエラーがスローされます。

com.amazonaws.AmazonClientException: Unable to load AWS credentials from any provider in the chain 
at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:131) 
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3648) 
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3607) 
at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:600) 

はさえ、私はあまりにも MockEnvironmentConfigurationPropertiesを使用してこれらの値を設定しようとしています。しかし、何も起こらなかった。

これらの資格情報を模擬する方法はありますか?

私はMockitoJRunnerを使用しています。だから、私はそれをPowermockitoに変更することはできません。

編集: 私はS3からlistObjects()を呼び出してファイルを取得したいと思います。これは、取得するAWS資格情報が必要なので、私が問題に直面しているところです。

すべてのメソッド呼び出しは、内部的に定義済みのクラスとメソッドを呼び出す場合にプロジェクトで指定されます。

+0

を返されるオブジェクトを設定します。 –

答えて

0

内部で使用するものではなく、AmazonS3Clientクラスを偽装することを検討してください。 AWSライブラリのある日にAmazonS3Client内部を変更する更新があると、テストが壊れている可能性があります。その後、

AmazonS3Client amazonClient = Mockito.mock(AmazonS3Client.class); 

とは、あなたのユニットテストのコードを追加してください

Mockito.doReturn(objListing).when(amazonClient).listObjects(bucketName); 
+0

まだ同じ例外が発生しています.. :( – swetha

+0

質問にさらにコードを追加できますか? –

関連する問題