【发布时间】:2018-10-09 17:03:39
【问题描述】:
我确定我在这里遗漏了一些非常明显的东西 - 我对一个非常简单的 Slick 3.2 设置进行了单元测试。 DAO 有如下基本的检索和插入方法:
override def questions: Future[Seq[Tables.QuestionRow]] =
db.run(Question.result)
override def createQuestion(title: String, body: String, authorUuid: UUID): Future[Long] =
db.run(Question returning Question.map(_.id) += QuestionRow(0l, UUID.randomUUID().toString, title, body, authorUuid.toString))
我有一些单元测试 - 用于我在内存 H2 中使用的测试,并有一个设置脚本(传递给 jdbcurl)来初始化表中的两个基本行。
用于检索的单元测试工作正常,它们获取由 init 脚本插入的两行,我刚刚添加了一个简单的单元测试来创建一行,然后将它们全部检索 - 假设它将获取三行,但无论我做什么,它只会检索前两个:
it should "create a new question" in {
whenReady(questionDao.createQuestion("Question three", "some body", UUID.randomUUID)) { s =>
whenReady(questionDao.questions(s)) { q =>
println(s)
println(q.map(_.title))
assert(true)
}
}
}
输出显示原始s(来自autoinc的返回ID)是3,正如我所料(我也尝试过插入不执行返回步骤,只是让它返回插入的行数,它返回 1,正如预期的那样),但查看 q 中返回的值,它只是 init 脚本插入的前两行。
我错过了什么?
【问题讨论】: