在模拟对象上调用函数

时间:2020-02-16 14:09:19

标签: java mockito powermockito

在getS的try块中获取空指针异常。

似乎没有在模拟对象。

在下面的存储中附加了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;
    }
}

有人可以帮我吗!

0 个答案:

没有答案
相关问题