2016-02-28 9 views
6

Volevo testare una classe eseguendola da un foglio di scala. Quando si esegue lo script di test:java.lang.RuntimeException: non si è verificato un errore dell'applicazione durante il test di una classe dal foglio di lavoro scala

import ping.GcmRestServer 

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

erano i GcmRestServer classe testato è

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)} 
    } 
} 

dà il seguente risultato:

import ping.GcmRestServer 

server: ping.GcmRestServer = [email protected] 
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) 

Qualcuno potrebbe spiegare che cosa ho fatto di sbagliato, e come Aggiustalo?

+0

Hai trovato una soluzione? – pedrorijo91

risposta

4

La riga import play.api.Play.current richiede un'applicazione di riproduzione in esecuzione.

Non ho mai usato fogli di lavoro scala, ma sembra lo stesso problema.

Sui test, la soluzione è eseguire un'applicazione falsa, come written in the documentation.

+1

Potresti fornire una risposta completa invece di un RTFM! – AHH

+0

@AHH Non ho esperienza nell'esecuzione di fogli di lavoro. Ho detto che qualcosa di simile accade nei test. E ho fornito il miglior riferimento possibile in cui la soluzione potesse essere spiegata – pedrorijo91

Problemi correlati