2017-10-26 6 views
0

Ich habe eine benutzerdefinierte Richtlinie mit einer Funktion wie die folgenden, die ein Directive1[ValidatedParameters] zurückkehrt, wo ValidatedParameters nur eine einfache Fall-Klasse ist:Wie testen Sie eine benutzerdefinierte Richtlinie/extrahieren Wert von akka.http.scaladsl.server.Directive?

class MyCustomDirective { 
    def validateParameters(...): Directive1[ValidatedParameters] = { 
     ... 
     provide(ValidatedParameters(...)) 
    } 
} 

ich bin mit wie dies in meinem Weg:

myCustomDirective.validateParameters(top, skip, modifiedDate) { 
    (validatedParameters: ValidatedParameters) => { 

Allerdings habe ich einen Komponententest, wo ich im Grunde die obige Funktion aufrufen möchten, und stellen Sie sicher, dass ValidatedParameters ist, was ich erwarten:

val actualResult: Directive1[ValidatedParameters] = new MyCustomDirective().validateParameters(...) 

Also actualResult ist ein Directive1[ValidatedParameters], gibt es einen Weg, ich kann Zugriff auf die ValidatedParameters Fallklasse innerhalb dieser Direktive von einem Komponententest?

+0

Könnten Sie bitte Definition für Richtlinie1 zur Verfügung stellen? – Pavel

+0

Directive1 ist Teil von akka.http.scaladsl – Rory

Antwort

0

endete ich mit dem Follow-up:

import akka.http.scaladsl.server.Directives.complete 
import akka.http.scaladsl.testkit.ScalatestRouteTest 
import de.heikoseeberger.akkahttpcirce.ErrorAccumulatingCirceSupport._ 
import org.scalamock.scalatest.MockFactory 
import org.scalatest.{BeforeAndAfter, Matchers} 

class MyTest extends ScalatestRouteTest { 

... 

"validate(top=None, skip=None, modifiedDate=None)" should "pass validation" in { 
    myCustomDirective.validate(top, skip, modifiedDate) { 
     (validatedParameters: ValidatedParameters) => { 
     validatedParameters shouldEqual expectedResult 
     complete("") // Needed to pass compilation 
     } 
    } 
    } 
} 
Verwandte Themen