Tea*_*ugh 7 scala mongodb scalatest salat playframework-2.0
我正在使用Play 2,Salat(用于mongoDB bindin)编写一个Web应用程序.我想在课程模型中测试一些方法(例如测试我通过id检索正确课程的事实).问题是我不想用虚拟课程污染我当前的数据库.如何使用Salat和Scala测试使用假数据库?这是我的一个测试文件.它创建了两个课程,并将其插入到数据库中,并在其上运行一些测试.
LessonSpec extends FlatSpec with ShouldMatchers {
object FakeApp extends FakeApplication()
val newLesson1 = Lesson(
title = "lesson1",
level = 5,
explanations = "expl1",
questions = Seq.empty)
LessonDAO.insert(newLesson1)
val newLesson2 = Lesson(
title = "lesson2",
level = 5,
explanations = "expl2",
questions = Seq.empty)
LessonDAO.insert(newLesson2)
"Lesson Model" should "be retrieved by level" in {
running(FakeApp) {
assert(Lesson.findByLevel(5).size === 2)
}
}
it should "be of size 0 if no lesson of the level is found" in {
running(FakeApp) {
Lesson.findByLevel(4) should be(Nil)
}
}
it should "be retrieved by title" in {
running(FakeApp) {
Lesson.findOneByTitle("lesson1") should be(Some(Lesson("lesson1", 5, "expl1", List())))
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在网上搜索但我找不到使用Salat和ScalaTest的好链接或项目.
在我的应用程序中,我使用 application.conf 中的参数来指定 Mongo 数据库名称。初始化 FakeApplication 时,我覆盖该参数,以便我的单元测试可以使用真实的 Mongo 实例,但看不到任何生产数据。
掩盖了我的应用程序特有的一些细节,我的测试看起来像这样:
// wipe any existing data
db.collectionNames.foreach { colName =>
if (colName != "system.indexes") db.getCollection(colName).drop
}
app = FakeApplication(additionalConfiguration = Map("mongo.db.name" -> "unit-test"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |