2016-02-28 6 views
6

Chciałem przetestować klasę, uruchamiając ją z arkusza kalkulacyjnego scala. Po uruchomieniu tego skryptu testowego:wyjątek java.lang.RuntimeException: Nie ma uruchomionego błędu aplikacji podczas testowania klasy z arkusza kalkulacyjnego scala

import ping.GcmRestServer 

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

Były testowane klasa GcmRestServer jest

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

daje następujący wynik:

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) 

mógłby ktoś wytłumaczyć mi, co zrobiłem źle i jak napraw to?

+0

Czy znalazłeś rozwiązanie? – pedrorijo91

Odpowiedz

4

Linia import play.api.Play.current wymaga uruchomionej aplikacji Play.

Nigdy nie używałem arkuszy roboczych scala, ale wydaje się, że to ten sam problem.

W testach rozwiązaniem jest uruchomienie fałszywej aplikacji, jako written in the documentation.

+1

Czy możesz podać pełną odpowiedź zamiast RTFM! – AHH

+0

@AHH Nie mam doświadczenia z uruchamianiem arkuszy roboczych. Powiedziałem, że coś podobnego dzieje się na testach. Zapewniłem najlepsze możliwe odniesienie, w którym można wyjaśnić rozwiązanie – pedrorijo91

Powiązane problemy