Я хочу создать тест Spring Boot для моего контроллера, но я не знаю как.
Вот мой код:
Контроллер:
@PostMapping(value = Constants.LOGOUT_URL)
public String logout (HttpServletRequest request) throws ApiException {
String authHeader = request.getHeader("Authorization");
if (authHeader != null) {
try {
String tokenValue = authHeader.replace("Bearer", "").trim();
OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);
tokenStore.removeAccessToken(accessToken);
} catch (Exception e) {
return HttpStatus.NOT_FOUND.toString();
}
}
return Utils.convertDateTime();
}
Это мой тестэто возьмет меня NullPointerException:
@RunWith(SpringJUnit4ClassRunner.class)
@AutoConfigureRestDocs
public class AuthControllerTest {
@Rule
public JUnitRestDocumentation jUnitRestDocumentation = new JUnitRestDocumentation();
@InjectMocks
private AuthController controller = new AuthController();
// To be initialised in the setup method.
private MockMvc mockMvc;
@Mock
private AuthService service;
@Before
public void setup() {
mockMvc = MockMvcBuilders.standaloneSetup(controller)
.apply(documentationConfiguration(this.jUnitRestDocumentation))
.build();
}
@Test
public void getLogout() throws Exception, ApiException {
String result = "{\"date\":\"20190212:0000\"}";
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
when(request.getHeader("principal")).thenReturn("admin");
when(request.getHeader("authorization")).thenReturn("authtoken");
when(controller.logout(any(request.getClass()))).thenReturn(result);
}
}
Я не знаю, как сделать тест для контроллера выхода из системы
Исключение, которое я получаю, следующее:
java.lang.NullPointerException: null
at com.sodexo.oneapp.api.auth.AuthController.login(AuthController.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)