一時的に問題を解決したと思いましたが、まだ問題が残っています。
モデルレイヤーのspecs2テストを作成しようとしています。ダミーオブジェクトを挿入してから、クエリを実行して、データが期待どおりに出力されることを確認します。私の簡単なテストは次のようになります。
クラスModelSpecは仕様を拡張します{ def is = args(sequential = true)^super.isをオーバーライドします オブジェクトFakeAppはFakeApplication()を拡張します running(FakeApp){ println( "データベースのセットアップ") val newUser = User( email = "wfbarksdale@gmail.com"、 username = "weezybizzle"、 password = "nutterbutter") User.save(newUser) } running(FakeApp){ 「ユーザーモデル」は{ {で「ユーザー名で作成および取得」 println( "誰かを見つける") User.findOneByUsername( "weezybizzle")はSomeである必要があります } {存在しないユーザーが見つかりません" println( "誰も見つからない") User.findOneByUsername( "nobody")はNoneである必要があります } } } }
そして、これが私が単体テストから得たスタックトレースです:
[情報]1つのScalaソースを/www/mojulo3/target/scala-2.9.1/test-classesにコンパイルしています... データベースを設定する 誰かを見つける 誰も見つけない [情報]ModelSpec [情報] [情報]ユーザーモデルは [エラー] !ユーザー名で作成および取得 [エラー]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日22:02:33
FakeAppが何らかの理由でデータベースから切断されており、再接続されていないようです。Playソースを調べたところ、実際に同じオブジェクトであるかどうかに関係なく、アプリケーションが停止して再起動するようです。onStop()
問題はサラッ法に起因しているのonStart()
ではないかと思いますが、よくわかりません。
私はこれにしばらく苦労してきましたが、問題について推論する方法だけでも、どんな助けでも大歓迎です。