java.lang.RuntimeException:从scala工作表测试类时,没有启动应用程序错误

Luk*_*asz 7 scala playframework

我想通过从scala工作表运行它来测试一个类.运行此测试脚本时:

import ping.GcmRestServer

val server = new GcmRestServer("AIzaSyCOn...")
server.send(List("dcGKzDg5VOQ:APA91bHNUDaBj01th..."), Map(
  "message" -> "Test Message",
  "title" -> "Test Title"
))
Run Code Online (Sandbox Code Playgroud)

是测试类GcmRestServer是

package ping

import play.api.Logger
import play.api.libs.ws.WS
import play.api.libs.json.Json
/**
  * Created by Lukasz on 26.02.2016.
  */
class GcmRestServer(val key: String) {

  def send(ids: List[String], data: Map[String, String]) = {
    import play.api.Play.current
    import scala.concurrent.ExecutionContext.Implicits.global

    val body = Json.obj(
      "registration_ids" -> ids,
      "data" -> data
    )

    WS.url("https://android.googleapis.com/gcm/send")
      .withHeaders(
        "Authorization" -> s"key=$key",
        "Content-type" -> "application/json"
      )
      .post(body)
      .map { response => Logger.debug("Result: " + response.body)}
  }
}
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

import ping.GcmRestServer

server: ping.GcmRestServer = ping.GcmRestServer@34860db2
java.lang.RuntimeException: There is no started application
    at scala.sys.package$.error(test.sc2.tmp:23)
    at play.api.Play$$anonfun$current$1.apply(test.sc2.tmp:82)
    at play.api.Play$$anonfun$current$1.apply(test.sc2.tmp:82)
    at scala.Option.getOrElse(test.sc2.tmp:117)
    at play.api.Play$.current(test.sc2.tmp:82)
    at ping.GcmRestServer.send(test.sc2.tmp:16)
    at #worksheet#.get$$instance$$res0(test.sc2.tmp:4)
    at #worksheet#.#worksheet#(test.sc2.tmp:19)
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下我做错了什么,以及如何解决这个问题?

ped*_*o91 6

该行import play.api.Play.current需要运行Play应用程序.

我从来没有使用scala工作表,但它似乎是同样的问题.

在测试中,解决方案是运行虚假应用程序,如文档中所述.

  • 能不能给出一个完整的答案而不是RTFM! (2认同)
  • @AHH 我没有运行工作表的经验。我告诉过类似的事情发生在测试中。我提供了最好的参考资料,可以解释解决方案 (2认同)