2017-03-23 1 views
0

Ich habe eine einfache Web-App mit Play 2 Framework. Es verfügt über zwei REST API:So führen Sie mehrere Anfragen in einem Play 2 Specs2 Unit Test

  • /schreiben
  • /lesen

ich dafür einen Funktionstest implementieren möchten. Ich möchte, dass der Test mehrmals die /write aufruft, und verifiziere dann das Ergebnis von /read.

Aber die route Funktion gibt einen Future, und ich konnte nicht einen Weg finden, die specs2 lassen für meine Future zu warten.

Mein Code sieht so aus:

object MySpec extends Specification { 

    "/write * 2, then /read" in new WithApplication { 
    val write1 = route(app, FakeRequest(GET, '/write')).get 
    val write2 = route(app, FakeRequest(GET, '/write')).get 
    val read = route(app, FakeRequest(GET, '/read')).get 

    // how to chain the requests so the execute one after another, and the specs2 can wait for it? 

    status(read) must_==OK 
    } 
} 

Antwort

1

Kannst du nicht etwas tun?

import play.api.mvc._ 
import play.api.test._ 
import scala.concurrent.Future 

object MySpec extends Specification { 

"/write * 2, then /read" in new WithApplication { 
    val result = for{ 
    _ <- route(app, FakeRequest(GET, '/write')) 
    _ <- route(app, FakeRequest(GET, '/write')) 
    read <- route(app, FakeRequest(GET, '/read')) 
    }yield{ read } 

    status(result) mustEqual OK 
} 
Verwandte Themen