我正在尝试使用下面的代码来模拟RestTemplate getEntity()方法,但是我遇到了异常,并且是单元测试的新手。>
有人可以帮我请问我的错吗?>
public List<SampleObject1> getGitHubUSersList(){ try { ResponseEntity<SampleObject1[]>responseEntity = restTemplate.getForEntity("https://api.github.com/users", SampleObject1[].class); List<SampleObject1>arrayLsit = Arrays.asList(responseEntity.getBody()); System.out.println("final list is---->"+objectMapperl.writeValueAsString(arrayLsit)); return arrayLsit; }catch (Exception e) { e.printStackTrace(); } return null; }
测试类
公共类SampleServiceTest1 {
@Mock
RestTemplate mockrestTemplate;
@InjectMocks
@Spy
SampleService1 sampleService;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@SuppressWarnings("unchecked")
@Test
public void getGitHubUSersListTest() {
List<SampleObject1> sampleObject1s = new ArrayList<>();
SampleObject1 sampoleObject1 = new SampleObject1();
sampoleObject1.setId(1);
sampoleObject1.setLogin("sample1");
sampoleObject1.setNode_id("sample2");
sampleObject1s.add(sampoleObject1);
SampleObject1 sampoleObject2 = new SampleObject1();
sampoleObject2.setId(2);
sampoleObject2.setLogin("sample3");
sampoleObject2.setNode_id("sample4");
sampleObject1s.add(sampoleObject2);
Mockito.doReturn(sampleObject1s).when(mockrestTemplate).getForEntity(Matchers.anyString(), ArgumentMatchers.any(Class.class));
List<SampleObject1> list = sampleService.getGitHubUSersList();
assertNotNull(list);
}
}
org.mockito.exceptions.misusing.NullInsteadOfMockException:
Argument passed to when() is null!
Example of correct stubbing:
doThrow(new RuntimeException()).when(mock).someMethod();
Also, if you use @Mock annotation don't miss initMocks()
at com.example.microservice.service.SampleServiceTest1.getGitHubUSersListTest(SampleServiceTest1.java:50)
我正在尝试使用下面的代码模拟RestTemplate getEntity()方法,但是我遇到了异常,并且我是单元测试的新手,有人可以帮我请问我错乱的类public List <...>
您的模拟设置错误getForEntity
不返回List<SampleObject1>
,因此您不能将其设置为需要返回ResponseEntity<SampleObject1[]>
的返回类型。
因此可以解决您的问题。声明一个新的模拟
@Mock
private ResponseEntity<SampleObject1[]> mockResponseEntity