我是 scala 的新手,scalatest 也是如此。
我的目标是为以下一小段代码编写一个单元测试:
import java.sql.SQLException
import com.typesafe.scalalogging.LazyLogging
import slick.jdbc.MySQLProfile.api._
import scala.concurrent.{ExecutionContext, ExecutionContextExecutor, Future}
object DbCreator extends LazyLogging {
implicit val ex: ExecutionContextExecutor = ExecutionContext.global
def createDatabaseIfNotExist(): Future[String] = {
Database
.forURL(url = "some host", user = "user", password = "pass", driver = "driver")
.run(sqlu"CREATE DATABASE ...").map(_ => "created")
.recover {
case e: Throwable => {
logger.error("Error!", e)
throw new SQLException(e.getMessage)
}
}
}
}
我以前使用过python,它具有补丁概念。
所以我的想法是修补正在导入并在createDatabaseIfNotExist
中使用的Database
类,以便我可以验证不同的场景。
不幸的是,我在标量测试中找不到等效/类似的概念。
我错过了吗?
我的方法错了吗?如果是这样,你会如何建议我为createDatabaseIfNotExist
方法编写 UT?
当前的DbCreator
实现是否不够可测试?
非常感谢所有的帮助!
我看到几个选项:
- Scalamock 或一些 Java 模拟库
- 助手 JDBC 驱动程序(具有 scala DSL(
- 嵌入式 MySQL