Ao executar o teste "deve retornar codigo 200 quando chamar topicos com token" da classe "TopicoControllerTest", depois de realizar os passo a passo mostrado na aula, estava dando o seguinte erro:
java.lang.AssertionError: Range for response status value 500 expected:<SUCCESSFUL> but was:<SERVER_ERROR>
Expected :SUCCESSFUL
Actual :SERVER_ERROR
<Click to see difference>
A solução que encontrei foi utilizar a classe RedisContainer (importada do test-containers-redis) e criar uma classe RedisConfig, configurando o funcionamento do Redis.
O meu código ficou da seguinte forma:
pom.xml
:
...
<dependencies>
...
<dependency>
<groupId>com.redis</groupId>
<artifactId>testcontainers-redis</artifactId>
<version>2.2.2</version>
<scope>test</scope>
</dependency>
...
</dependencies>
RedisConfig.kt
:
@Configuration
class RedisConfig {
@Bean
fun redisConnectionFactory(
@Value("\${spring.redis.host}") host: String,
@Value("\${spring.redis.port}") port: Int
): LettuceConnectionFactory {
return LettuceConnectionFactory(RedisStandaloneConfiguration(host, port))
}
@Bean
fun redisTemplate(factory: RedisConnectionFactory): StringRedisTemplate {
return StringRedisTemplate(factory)
}
}
DatabaseContainerConfiguration.kt
:
abstract class DatabaseContainerConfiguration {
companion object {
...
@JvmField
@Container
@ClassRule
val redisContainer = RedisContainer("redis:7.4.2").apply {
withExposedPorts(6379)
waitingFor(Wait.forListeningPort())
}