gpt4 book ai didi

java - HikariCP - 如何为单元测试配置模拟数据源

转载 作者:行者123 更新时间:2023-12-01 13:46:40 26 4
gpt4 key购买 nike

我有某种集成测试可以启动我的服务,但不进行实际的数据库调用。

我得到这样的异常(exception):

[      main] 11:04:47,368 ERROR HikariPool:566 - HikariPool-1 - 
Exception during pool initialization.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

这对我的测试没问题(它通过了)。但是,我不希望日志中出现该错误,这会使开发人员在测试失败时感到困惑。
我正在使用 Spring 配置。我可以配置某种模拟数据源吗?

最佳答案

为此,我正在使用 kotlin、spring boot 和 io.mockk:mockk。
在您的集成测试中,您可以通过将其放在顶部来指定上下文配置

@ContextConfiguration(classes = [DBConfiguration::class])

上面描述的类是您模拟的数据库连接所在的位置。

您的 DBConfiguration类(class)看起来像这样
import com.zaxxer.hikari.HikariDataSource
import io.mockk.every
import io.mockk.mockk
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Primary
import java.sql.Connection
import java.sql.DatabaseMetaData

/**
* Custom configuration class used for testing and disables database connection and initial connection verification
*/
class DBConfiguration {
@Primary
@Bean
fun hikariDataSource(): HikariDataSource {
val connection: Connection = mockk()
val databaseMetadata: DatabaseMetaData = mockk()
val hikariDataSource: HikariDataSource = mockk()
hikariDataSource
every { hikariDataSource.connection }.returns(connection)
every { hikariDataSource.connectionTestQuery }.returns("yeet")
every { hikariDataSource.metricRegistry }.returns(Any())
every { hikariDataSource.maximumPoolSize }.returns(2)
every { hikariDataSource.minimumIdle }.returns(2)
every { connection.metaData }.returns(databaseMetadata)
return hikariDataSource
}
}

关于java - HikariCP - 如何为单元测试配置模拟数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50504301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com