0

誰か助けてください。DAOコードをテストする必要があるPlay2プロジェクトがあります。http://www.playframework.org/documentation/2.0.2/ScalaTestのドキュメントを使用し ました。テストは非常に簡単です。

import models.Calendar
import org.specs2.mutable._

import play.api.test._
import play.api.test.Helpers._

class CalendarSpec extends Specification {
"Calendar model" should {

  "be retrieved by id" in {

    val fakeApp = FakeApplication()
    running(fakeApp) {

      lazy val calendarId= Calendar.addCalendar(
        Calendar(subject="test",
          upAccount = "mytest",
          masterId = 1,
          calendarType = 1,
          isAllDayEvent = false,
          hasAttachment = false,
          category = "test",
          instanceType = 1,
        upName = "test" ))
      lazy val Some(calendar) = Calendar.getCalendar(calendarId.get)

      calendar.upAccount must equalTo("mytest")
    }
  }
}
}

「sbt test」を実行すると、奇妙なエラーが発生します。

[info] Calendar model should
[error] ! Fragment evaluation error
[error]     ThrowableException: play.api.test.Helpers$.play$api$http$HeaderNames$_setter_$ACCESS_CONTROL_ALLOW_ORIGIN_$eq(Ljava/lang/String;)V (TraversableLike.scala:194)
[error] play.api.http.HeaderNames$class.$init$(StandardValues.scala:195)
[error] play.api.test.Helpers$.<init>(Helpers.scala:16)
[error] play.api.test.Helpers$.<clinit>(Helpers.scala:111)
[error] CalendarSpec$$anonfun$1$$anonfun$apply$1.apply(CalendarSpec.scala:13)
[error] CalendarSpec$$anonfun$1$$anonfun$apply$1.apply(CalendarSpec.scala:10)
[error] play.api.test.Helpers$.play$api$http$HeaderNames$_setter_$ACCESS_CONTROL_ALLOW_ORIGIN_$eq(Ljava/lang/String;)V
[error] play.api.http.HeaderNames$class.$init$(StandardValues.scala:195)
[error] play.api.test.Helpers$.<init>(Helpers.scala:16)
[error] play.api.test.Helpers$.<clinit>(Helpers.scala:111)
[error] CalendarSpec$$anonfun$1$$anonfun$apply$1.apply(CalendarSpec.scala:13)
[error] CalendarSpec$$anonfun$1$$anonfun$apply$1.apply(CalendarSpec.scala:10)

StackOverflow/Google はこの例外について何も知りません。前もって感謝します。

4

2 に答える 2

0

スタックトレースを見ると、ライブラリが正しくないか、クラスパスに存在しないと思われます。これが、「Helpers$」が表示される理由です。クラスコンストラクターが失敗しているように見える場所をトレースします。

specs2 を使用せずに Play2 のヘルパー クラスを使用してテスト ディレクトリに小さなアプリを作成し、何が起こるかを確認することで、これを検証できます。

于 2012-07-25T23:20:01.737 に答える
0

私は解決策を見つけました - https://groups.google.com/forum/#!msg/play-framework/NSN9xfktUks/EwiG1Cc0C9oJ :
new play.core.StaticApplication(new java.io.File("."))実際に Play アプリを起動するには、DAO 呼び出しがテストで機能するように追加する必要があります。

于 2012-07-26T11:17:56.427 に答える