Вызов функции на фиктивном объекте - PullRequest
0 голосов
/ 16 февраля 2020

Получение исключения 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;
    }
}

Может кто-нибудь помочь мне!

...