我对使用 Scala/Scalatest 还很陌生,我正在尝试编写一些模拟数据库的测试用例。
我有一个名为 FindInDB(entry : String) 的函数,它检查“entry”是否在数据库中,如下所示:
entry match {
case `entry` =>
if(db.table contains entry) {
true
}
false
}
FindInDB 在另一个函数中调用,该函数定义在一个名为 Service 的类中。 我希望能够模拟 db.table 部分。通过阅读 scalatest 我知道我可以模拟 FindInDB 定义的类并控制调用 FindInDB 的函数返回什么,但我想测试 FindInDB 函数本身并通过模拟控制 db.table 中的内容
最佳答案
你可以使用 DB mockup 框架,比如 jOOQ,或者我的框架 Acolyte。 Acolyte 可以在 JDBC 级别模拟 DB,对于直接或间接基于一个 JDBC 的任何项目(例如 JPA、EJB、Anorm、Slick):您为每个测试用例描述哪个 JDBC 结果(结果集、更新计数、错误)是针对哪个语句的。
它允许模拟完全相同的 JDBC 数据,这些数据将由您的应用程序/库与预期的数据库进行交换,具有许多测试优势:单元隔离、简单(无需使用固定装置设置/拆除测试数据库)。
在线文档位于 http://acolyte.eu.org/ .
有一个 Scala DSL 可以很容易地用于测试(文档中提供了带有规范的示例)。
关于Scalatest 模拟数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25012599/