我有一个使用org.scalatest进行一些测试的scala应用程序.这些测试需要一些全局设置(和拆解),以便管理测试数据库.
请不要告诉我我的测试不应该打到数据库,我应该使用Java-DAO-Stub-WTF-Overkill-Way™:-).
我正在使用SBT运行测试,这提供了一种在测试之前和之后执行代码的方法:
testOptions in Test += Tests.Setup( () => println("Setup") )
testOptions in Test += Tests.Cleanup( () => println("Cleanup") )
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法访问那里的课程.不出所料,将它们导入build.sbt也不起作用.
有任何想法吗?
我有以下使用PlaySlick连接到数据库的DAO.该类有一个read我需要使用ScalaTest测试的方法.我的问题是我不知道如何模拟DatabaseConfigProvider在UsersDAO类中注入它并测试read方法.这是要测试的类:
class UsersDAO @Inject()(@NamedDatabase("mydb")
protected val dbConfigProvider: DatabaseConfigProvider)
extends with HasDatabaseConfigProvider[JdbcProfile] {
import driver.api._
val db1 = dbConfigProvider.get[JdbcProfile].db
def read (sk: Int) = {
val users = TableQuery[UserDB]
val action = users.filter(_.sk === sk).result
val future = db1.run(action.asTry)
future.map{
case Success(s) =>
if (s.length>0)
Some(s(0))
else
None
case Failure(e) => throw new Exception ("Failure: " + e.getMessage)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试编写测试:
class UserDAOTest extends PlaySpec with OneAppPerSuite {
implicit override lazy val …Run Code Online (Sandbox Code Playgroud)