Обновление
Впрыск LdapService
не работает должным образом.Spring создает новые экземпляры, но объект не участвует в обычном жизненном цикле DI управляемого компонента.Например, метод @PostConstruct
или @Value
аннотации в LdapService
действительно вызывают / вводятся.Поэтому я предполагаю, что Spring просто создает экземпляры в терминах модельного компонента, но не в смысле управляемого компонента.
Таким образом, весь вопрос о насмешках над этим объектом устарел.
Конец обновления
Как я могу смоделировать службу, передаваемую в качестве аргумента контроллеру Spring MVC?
Служба, которая должна быть смоделирована.Это с областью «прототип», что важно в моем сценарии:
@Service
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class LdapService {
...
}
Spring MVC Controller:
@RestController
public class SomeController {
@GetMapping("/something")
public ResponseEntity<Void> doSomething(
@Valid @RequestBody SomeDTO someDTO,
@Autowired LdapService ldapService) {
ldapService.invokeSomeMethod(someDTO.getName());
return ResponseEntity.ok().build();
}
}
Тест:
@RunWith(SpringRunner.class)
@WebMvcTest(PasswordController.class)
public class SomeControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void doSomeTest() throws Exception {
// In the following call, a mocked LdapService shall be used!
mockMvc.perform(get("/something"));
Как я могумакет LdapService в этом примере?