`mock.Mvc.perform()` 导致 `NullPointerException`
`mock.Mvc.perform()` resulting on a `NullPointerException`
在这里,我正在尝试对端点执行单元测试 /persons
:
@AutoConfigureMockMvc
@WebMvcTest(PersonController.class)
public class PersonServiceTest {
@Autowired
private static MockMvc mockMvc;
@MockBean
private PersonService personService;
@Test
public void shouldGetPersons() throws Exception {
Person person = new Person();
person.setFirstName("Harry");
person.setLastName("POTTER");
List<Person> persons = new ArrayList<>();
persons.add(person);
Mockito.when(personService.getPersons()).thenReturn(persons);
mockMvc.perform(get("/persons")).andExpect(status().isOk());
}
}
我检查了堆栈跟踪,但我不明白为什么我的测试可能会在 NullPointerException
.
上结束
堆栈跟踪
@RestController
public class PersonController {
@Autowired
private PersonService personService;
@GetMapping("/persons")
public List<Person> getPersons() throws IOException {
return personService.getPersons();
}
}
@Service
public class PersonService {
@Autowired
private PersonRepository personRepository;
public List<Person> getPersons() {
return personRepository.findAll();
}
}
我没注意到我的 mockMvc
错成了 static
。删除它解决了问题!
@Autowired
private static MockMvc mockMvc;
至
@Autowired
private MockMvc mockMvc;
在这里,我正在尝试对端点执行单元测试 /persons
:
@AutoConfigureMockMvc
@WebMvcTest(PersonController.class)
public class PersonServiceTest {
@Autowired
private static MockMvc mockMvc;
@MockBean
private PersonService personService;
@Test
public void shouldGetPersons() throws Exception {
Person person = new Person();
person.setFirstName("Harry");
person.setLastName("POTTER");
List<Person> persons = new ArrayList<>();
persons.add(person);
Mockito.when(personService.getPersons()).thenReturn(persons);
mockMvc.perform(get("/persons")).andExpect(status().isOk());
}
}
我检查了堆栈跟踪,但我不明白为什么我的测试可能会在 NullPointerException
.
堆栈跟踪
@RestController
public class PersonController {
@Autowired
private PersonService personService;
@GetMapping("/persons")
public List<Person> getPersons() throws IOException {
return personService.getPersons();
}
}
@Service
public class PersonService {
@Autowired
private PersonRepository personRepository;
public List<Person> getPersons() {
return personRepository.findAll();
}
}
我没注意到我的 mockMvc
错成了 static
。删除它解决了问题!
@Autowired
private static MockMvc mockMvc;
至
@Autowired
private MockMvc mockMvc;