Я пытаюсь создать модульный тест в проекте, но у меня застряли попытки имитировать функцию BCrypt.checkpw. Я читал, что для создания статического макета требуется определенный способ обработки теста, я я не совсем уверен, так ли это или, может быть, это что-то другое. UsuarioController.java
@GetMapping("lastPassword")
public ResponseEntity lastPassword(@RequestParam(required = true) String correo, @RequestParam(required = true) String newPassword) { // Checa si la contraseña ingresada fue la ultima contraseña del usuario
try {
Optional tmp = repositoryVista.findByCorreo(correo);
Optional usuario = service.findById(Integer.toUnsignedLong(tmp.get().getIdUsuario())); // Se busca al usuario perteneciente al correo recibido
String password = "$2a$14$" + usuario.get().getPassword(); // Se recoge la contraseña encriptada
Boolean isLast = BCrypt.checkpw(newPassword, password); // Se checa si la contraseña ingresada coincide con la encriptada
return new ResponseEntity(isLast, HttpStatus.OK);
} catch (Exception e) {
return ResponseEntity.badRequest().build();
}
}
%TESTC 1 v2
%TSTTREE2,mx.com.ficachi.master.login.controllers.UsuarioControllerTest,true,1,false,1,UsuarioControllerTest,,[engine:junit-jupiter]/[class:mx.com.ficachi.master.login.controllers.UsuarioControllerTest]
%TSTTREE3,lastPassword(mx.com.ficachi.master.login.controllers.UsuarioControllerTest),false,1,false,2,lastPassword(),,[engine:junit-jupiter]/[class:mx.com.ficachi.master.login.controllers.UsuarioControllerTest]/[method:lastPassword()]
%TESTS 3,lastPassword(mx.com.ficachi.master.login.controllers.UsuarioControllerTest)
%ERROR 3,lastPassword(mx.com.ficachi.master.login.controllers.UsuarioControllerTest)
%TRACES
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Also, this error might show up because:
1. you stub either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
Mocking methods declared on non-public parent classes is not supported.
2. inside when() you don't call method on mock but on some other object.
at mx.com.ficachi.master.login.controllers.UsuarioControllerTest.lastPassword(UsuarioControllerTest.java:148)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
%TRACEE
%TESTE 3,lastPassword(mx.com.ficachi.master.login.controllers.UsuarioControllerTest)
%RUNTIME8003
Я пытался имитировать объект BCrypt, используя аннотацию @MockBean, но выдает ту же ошибку.
Я пытаюсь создать модульный тест в проекте, но у меня застряли попытки имитировать функцию BCrypt.checkpw. Я читал, что для создания статического макета требуется определенный способ обработки теста, я я не совсем уверен, так ли это или, может быть, это что-то другое. [b]UsuarioController.java[/b] [code] @GetMapping("lastPassword") public ResponseEntity lastPassword(@RequestParam(required = true) String correo, @RequestParam(required = true) String newPassword) { // Checa si la contraseña ingresada fue la ultima contraseña del usuario try { Optional tmp = repositoryVista.findByCorreo(correo); Optional usuario = service.findById(Integer.toUnsignedLong(tmp.get().getIdUsuario())); // Se busca al usuario perteneciente al correo recibido String password = "$2a$14$" + usuario.get().getPassword(); // Se recoge la contraseña encriptada Boolean isLast = BCrypt.checkpw(newPassword, password); // Se checa si la contraseña ingresada coincide con la encriptada
%ERROR 3,lastPassword(mx.com.ficachi.master.login.controllers.UsuarioControllerTest) %TRACES org.mockito.exceptions.misusing.MissingMethodInvocationException: when() requires an argument which has to be 'a method call on a mock'. For example: when(mock.getArticles()).thenReturn(articles);
Also, this error might show up because: 1. you stub either of: final/private/equals()/hashCode() methods. Those methods *cannot* be stubbed/verified. Mocking methods declared on non-public parent classes is not supported. 2. inside when() you don't call method on mock but on some other object.
at mx.com.ficachi.master.login.controllers.UsuarioControllerTest.lastPassword(UsuarioControllerTest.java:148) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)