Получение исключения Null Pointer в блоке try в getS.
Похоже, что объект не подвергается мошенничеству.
Прикрепленный фрагмент getS в хранилище ниже.
Я пытался издеваться над S3ObjectInputStream или даже использовал Spy. Но получается исключение нулевого указателя.
Пытался использовать WhiteBox. Но у меня ничего не вышло.
Я новичок в Java и модульном тестировании.
import static org.powermock.api.mockito.PowerMockito.*;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.model.S3ObjectInputStream;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.Spy;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PowerMockIgnore({ "javax.management.*" })
@PrepareForTest({ Storage.class, AmazonS3.class, S3ObjectInputStream.class, S3Object.class })
public class t {
@Mock
AmazonS3 s3;
@Mock
ObjectMapper serializer;
@Spy
S3ObjectInputStream s3ObjectInputStream = new S3ObjectInputStream(null, null, false);
@Mock
S3Object s3Object;
Storage s3Storage;
@Before
public void setUp() {
final String bucketName = "dummyBucket";
s3Storage = new Storage(s3, bucketName, serializer);
}
//TODO
@Test
public void testS()
throws Exception {
doReturn(s3Object).when(s3)
.getObject(Mockito.anyString(), Mockito.anyString());
doReturn(s3ObjectInputStream).when(s3Object)
.getObjectContent();
String is = s3Storage.getS(Mockito.anyString());
}
}
public String getS(final String storageKey) {
String a = "a";
String b = "b";
try {
S3Object s3Object = s3.getObject(storageKey, b);
try (S3ObjectInputStream s3ObjectInputStream = s3Object.getObjectContent()) {
return s3ObjectInputStream.toString();
}
}
catch (Exception e) {
return null;
}
}
Может кто-нибудь помочь мне!