Я создаю конечную точку Spring Boot в Kotlin, и мне нужно создать тесты для этого. Я мог бы создать тест для моего класса контроллера ниже:
import org.springframework.security.core.Authentication
@RestController
@RequestMapping("/servicos/solicitacoes")
class SolicitacaoController {
@Autowired
private lateinit var solicitacaoService: SolicitacaoService
@PostMapping(consumes = [MediaType.APPLICATION_JSON_VALUE])
fun post(@RequestBody solicitacaoDTO: SolicitacaoDataClassDTO, @ApiIgnore authentication: Authentication): Solicitacao {
return solicitacaoService.addSolicitacao(solicitacaoDTO, authentication)
}
}
Однако, поскольку у моего класса обслуживания есть параметр Authentication, я не знаю, как я могу создать тест для своего класса обслуживания.
Это мой класс обслуживания:
@Service
class SolicitacaoService {
@Autowired
private lateinit var solicitacaoRepository: SolicitacaoRepository
@Autowired
private lateinit var acessoSistema: AcessoSistema
fun addSolicitacao(solicitacaoDTO: SolicitacaoDataClassDTO, authentication: Authentication): Solicitacao{
val idInstitucional = acessoSistema.getIdInstitucional(authentication)
// Some Businnes logic
return solicitacaoRepository.save(solicitacao)
}
}
Процесс аутентификации выполняется с помощью токена Keycloak, который клиент должен получить для доступа к внутренним службам.
Я могу Проверьте мой контроллер, потому что в моем почтовом запросе я отправляю токен в заголовке запроса. Однако для тестирования метода addSolicitacao в моей службе мне нужно создать объект аутентификации.
Есть идеи, как создать тест для моего SolicitacaoService? Я использую JUnit и Mockito. Я думал о том, чтобы издеваться над моим репозиторием Solicitacao в моем SolicitacaoServiceTest. Однако я не знаю, как я могу создать Аутентификацию объекта с параметрами моего сервера Keycloak.
Это мой SolicitacaoServiceTest:
@RunWith(SpringRunner::class)
//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class SolicitacaoServiceTest {
@Autowired
private lateinit var solicitacaoService: SolicitacaoService
@MockBean
private lateinit var solicitacaoRepository: SolicitacaoRepository
@Test
fun quandoAdicionarSolicitacaoComUsuarioComum_entaoSolicitacaoDeveSerRetornada(){
}
}