Java 如何用所需的值模拟S3客户机
如何模拟总是给出一些预定义值的S3客户机。blow代码总是返回空数据 我的测试方法Java 如何用所需的值模拟S3客户机,java,amazon-s3,junit,mockito,powermockito,Java,Amazon S3,Junit,Mockito,Powermockito,如何模拟总是给出一些预定义值的S3客户机。blow代码总是返回空数据 我的测试方法 @Test Void TestMyMethod() { List<String> myList = Arrays.asList("xyz", "pqr"); InputStream testInputStream = new StringInputStream("abcd");
@Test
Void TestMyMethod() {
List<String> myList = Arrays.asList("xyz", "pqr");
InputStream testInputStream = new StringInputStream("abcd");
S3ObjectInputStream s3ObjectInputStream = mock(S3ObjectInputStream.class);
S3Object s3Object = mock(S3Object.class);
when(s3Client.getObject(anyString(), anyString())).thenReturn(s3Object);
when(s3ObjectInputStream.read(any(byte[].class))).thenAnswer(invocation -> {
return testInputStream.read(invocation.getArgument(100));
});
when(s3Object.getObjectContent()).thenReturn(s3ObjectInputStream);
when(asyncWorkerUtil.readMyListFromS3()).thenReturn(myList); // I am getting null here
}
@测试
Void TestMyMethod(){
List myList=Arrays.asList(“xyz”、“pqr”);
InputStream testInputStream=新StringInputStream(“abcd”);
S3ObjectInputStream S3ObjectInputStream=mock(S3ObjectInputStream.class);
S3Object S3Object=mock(S3Object.class);
当(s3Client.getObject(anyString(),anyString())。然后返回(s3Object);
当(s3ObjectInputStream.read(any(byte[].class))。然后回答(调用->{
返回testInputStream.read(invocation.getArgument(100));
});
当(s3Object.getObjectContent())。然后返回(s3ObjectInputStream);
当(asyncWorkerUtil.readMyListFromS3()).thenReturn(myList);//我在这里得到null
}
我期望(“xyz”、“pqr”)作为retrun值而不是空列表
实际方法
public List<String> readMyListFromS3() throws IOException {
S3Object s3object = s3Client.getObject(Bucket, FilePath);
List<String> stuList = new ArrayList<>();
Reader reader = new BufferedReader(new InputStreamReader(s3object.getObjectContent()));
CSVReader csvReader = new CSVReader(reader);
List<String[]> list = csvReader.readAll()
list.stream().filter(item -> !item[0].trim().isEmpty()).forEach(item ->
stuList.add(item[0]));
retrun list;
}
public List readMyListFromS3()引发IOException{
S3Object S3Object=s3Client.getObject(Bucket,FilePath);
List stuList=new ArrayList();
Reader Reader=new BufferedReader(新的InputStreamReader(s3object.getObjectContent());
CSVReader CSVReader=新的CSVReader(读卡器);
List List=csvReader.readAll()
list.stream().filter(项->!项[0].trim().isEmpty()).forEach(项->
添加(项目[0]);
重新运行列表;
}