我以为我已经暂时解决了这个问题,但事实证明我仍然有问题。
我正在尝试为我的模型层创建一些 specs2 测试,我想插入一些虚拟对象,然后运行一些查询以确保数据按预期输出。这是我的简单测试的样子:
类 ModelSpec 扩展规范 {
覆盖 def is = args(sequential = true) ^ super.is
对象 FakeApp 扩展了 FakeApplication()
运行(FakeApp){
println("建立数据库")
val 新用户 = 用户(
电子邮件=“wfbarksdale@gmail.com”,
用户名 = "weezybizzle",
密码=“坚果黄油”)
用户保存(新用户)
}
运行(FakeApp){
“用户模型”应该 {
{中的“由用户名创建和检索”
println("找人")
User.findOneByUsername("weezybizzle") 必须是Some
}
{中的“找不到不存在的用户”
println("找不到人")
User.findOneByUsername("nobody") 必须是None
}
}
}
}
这是我从单元测试中获得的堆栈跟踪:
[信息] 将 1 个 Scala 源代码编译到 /www/mojulo3/target/scala-2.9.1/test-classes...
设置数据库
找人
找不到人
[信息] 模型规格
[信息]
[信息] 用户模型应该
[错误] !由用户名创建和检索
[错误] IllegalStateException: 这个 Mongo 已经关闭 (DBTCPConnector.java:123)
[错误] com.mongodb.DBTCPConnector._checkClosed(DBTCPConnector.java:123)
[错误] com.mongodb.DBTCPConnector.call(DBTCPConnector.java:207)
[错误] com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:313)
[错误] com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:298)
[错误] com.mongodb.DBCollection.findOne(DBCollection.java:682)
[错误] com.mongodb.DBCollection.findOne(DBCollection.java:661)
[错误] com.mongodb.casbah.MongoCollectionBase$class.findOne(MongoCollection.scala:225)
[错误] com.mongodb.casbah.MongoCollection.findOne(MongoCollection.scala:897)
[错误] com.novus.salat.dao.SalatDAO.findOne(SalatDAO.scala:311)
[错误] models.User$.findOneByUsername(User.scala:24)
[错误] test.ModelSpec$$anonfun$3$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$3.apply(ModelSpec.scala:29)
[错误] test.ModelSpec$$anonfun$3$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$3.apply(ModelSpec.scala:29)
[错误] test.ModelSpec$$anonfun$3$$anonfun$apply$1$$anonfun$apply$2.apply(ModelSpec.scala:29)
[错误] test.ModelSpec$$anonfun$3$$anonfun$apply$1$$anonfun$apply$2.apply(ModelSpec.scala:27)
[错误] !找不到不存在的用户
[错误] IllegalStateException: 这个 Mongo 已经关闭 (DBTCPConnector.java:123)
[错误] com.mongodb.DBTCPConnector._checkClosed(DBTCPConnector.java:123)
[错误] com.mongodb.DBTCPConnector.call(DBTCPConnector.java:207)
[错误] com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:313)
[错误] com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:298)
[错误] com.mongodb.DBCollection.findOne(DBCollection.java:682)
[错误] com.mongodb.DBCollection.findOne(DBCollection.java:661)
[错误] com.mongodb.casbah.MongoCollectionBase$class.findOne(MongoCollection.scala:225)
[错误] com.mongodb.casbah.MongoCollection.findOne(MongoCollection.scala:897)
[错误] com.novus.salat.dao.SalatDAO.findOne(SalatDAO.scala:311)
[错误] models.User$.findOneByUsername(User.scala:24)
[错误] test.ModelSpec$$anonfun$3$$anonfun$apply$1$$anonfun$apply$6$$anonfun$apply$7.apply(ModelSpec.scala:35)
[错误] test.ModelSpec$$anonfun$3$$anonfun$apply$1$$anonfun$apply$6$$anonfun$apply$7.apply(ModelSpec.scala:35)
[错误] test.ModelSpec$$anonfun$3$$anonfun$apply$1$$anonfun$apply$6.apply(ModelSpec.scala:35)
[错误] test.ModelSpec$$anonfun$3$$anonfun$apply$1$$anonfun$apply$6.apply(ModelSpec.scala:33)
[信息]
[信息]
[信息] 规范 ModelSpec 的总计
[信息] 在 20 毫秒内完成
[信息] 2 个示例,0 个失败,2 个错误
[信息]
[错误] 错误:总计 2,失败 0,错误 2,通过 0,跳过 0
[错误] 测试期间的错误:
[错误] test.ModelSpec
[错误] {file:/www/mojulo3/}mojulo3/test:test: 测试不成功
[错误] 总时间:4 秒,2012 年 8 月 28 日 10:02:33 PM 完成
看起来 FakeApp 以某种方式与数据库断开连接,而不是重新连接。我查看了播放源,似乎应用程序将停止并重新启动,无论它是否实际上是同一个对象。我认为这个问题可能源于salatonStop()方法,或者onStart()我不太确定。
我已经为此苦苦挣扎了一段时间,任何帮助,即使只是关于如何推理问题,将不胜感激。