不适用于局部变量的模拟 - 获取指定的密钥不存在(服务 Amazon S3)
Not working mock for the local variable - Getting Specified Key does not exist (Service Amazon S3)
这是我想使用 mock 测试的实际方法
@Override
public void processTransaction(Exchange exchange) throws Exception {
AmazonS3 s3Client = null;
s3Client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());
url = String.format("%s%s%s", tenantConfig.getSchemaName(), PATH_LOC_NEW, fileName);
region = System.getProperty("aws.region.prefix") != null ? System.getProperty("aws.region.prefix") : "";
bucket = String.format("%s%s-%s", System.getProperty("aws.Environment"), region, "gfcp-tenant");
S3Object object = s3Client.getObject(new GetObjectRequest(bucket, url));
InputStream inputStream = new BufferedInputStream(object.getObjectContent());
ObjectMetadata meta = new ObjectMetadata();
}
这是我的测试逻辑,但它似乎不是在模拟 AmazonS3Client AmazonS3
这就是我出现异常的原因
@RunWith(PowerMockRunner.class)
@PrepareForTest({TransactionProcessingService.class})
@PowerMockIgnore({"javax.net.ssl.*","javax.security.*","javax.management.*","javax.crypto.*"})
public class TransactionProcessingServiceTest {
@Test
public void testProcessTransaction() throws Exception {
DefaultAWSCredentialsProviderChain credentialMock = PowerMockito.mock(DefaultAWSCredentialsProviderChain.class);
PowerMockito.whenNew(DefaultAWSCredentialsProviderChain.class).withNoArguments().thenReturn(credentialMock);
AmazonS3Client s3Client = PowerMockito.mock(AmazonS3Client.class);
HttpRequestBase httprequest = PowerMockito.mock(HttpRequestBase.class);
S3Object object= PowerMockito.mock(S3Object.class);
InputStream in = PowerMockito.mock(InputStream.class);
object.setObjectContent(new S3ObjectInputStream(in, httprequest));
when(s3Client.getObject(new GetObjectRequest("local_vittal-gfcp-tenant", "cdta/TransactionProcessing/New/junit_test_file.acf")))
.thenReturn(object);
PowerMockito.whenNew(AmazonS3Client.class).withArguments(credentialMock).thenReturn(s3Client);
transactionProcessingService.processTransaction(exchange);
}
}
谁能帮帮我。
提前致谢
它正在运行。
我还需要在 @PrepareForTest 中使用实现 class,例如 -
@PrepareForTest(TransactionProcessingServiceImpl.class)
这是我想使用 mock 测试的实际方法
@Override
public void processTransaction(Exchange exchange) throws Exception {
AmazonS3 s3Client = null;
s3Client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());
url = String.format("%s%s%s", tenantConfig.getSchemaName(), PATH_LOC_NEW, fileName);
region = System.getProperty("aws.region.prefix") != null ? System.getProperty("aws.region.prefix") : "";
bucket = String.format("%s%s-%s", System.getProperty("aws.Environment"), region, "gfcp-tenant");
S3Object object = s3Client.getObject(new GetObjectRequest(bucket, url));
InputStream inputStream = new BufferedInputStream(object.getObjectContent());
ObjectMetadata meta = new ObjectMetadata();
}
这是我的测试逻辑,但它似乎不是在模拟 AmazonS3Client AmazonS3
这就是我出现异常的原因
@RunWith(PowerMockRunner.class)
@PrepareForTest({TransactionProcessingService.class})
@PowerMockIgnore({"javax.net.ssl.*","javax.security.*","javax.management.*","javax.crypto.*"})
public class TransactionProcessingServiceTest {
@Test
public void testProcessTransaction() throws Exception {
DefaultAWSCredentialsProviderChain credentialMock = PowerMockito.mock(DefaultAWSCredentialsProviderChain.class);
PowerMockito.whenNew(DefaultAWSCredentialsProviderChain.class).withNoArguments().thenReturn(credentialMock);
AmazonS3Client s3Client = PowerMockito.mock(AmazonS3Client.class);
HttpRequestBase httprequest = PowerMockito.mock(HttpRequestBase.class);
S3Object object= PowerMockito.mock(S3Object.class);
InputStream in = PowerMockito.mock(InputStream.class);
object.setObjectContent(new S3ObjectInputStream(in, httprequest));
when(s3Client.getObject(new GetObjectRequest("local_vittal-gfcp-tenant", "cdta/TransactionProcessing/New/junit_test_file.acf")))
.thenReturn(object);
PowerMockito.whenNew(AmazonS3Client.class).withArguments(credentialMock).thenReturn(s3Client);
transactionProcessingService.processTransaction(exchange);
}
}
谁能帮帮我。 提前致谢
它正在运行。 我还需要在 @PrepareForTest 中使用实现 class,例如 -
@PrepareForTest(TransactionProcessingServiceImpl.class)