2015-09-02 19 views
13

Voglio scrivere test funzionale per il mio controller in PlayFramework. Per farlo voglio prendere in giro l'implementazione di alcune classi.Come sovrascrivere i moduli guice nei test dell'unità Playframework utilizzando ScalaTest

ho trovato bello esempio di come farlo usando spec2 qui: http://www.innovaedge.com/2015/07/01/how-to-use-mocks-in-injected-objects-with-guiceplayscala/

Ma io sto usando il test Scala con OneAppPerSuite tratto che utilizza FakeApplication. Ecco documentazione: https://www.playframework.com/documentation/2.4.x/ScalaFunctionalTestingWithScalaTest

Il problema è che non riesco a trovare un modo per intercettare in GuiceApplicationBuilder e sovrascrivere alcuni attacchi con implementazione mock.

Ecco FakeApplication implementazione da play.api.test:

case class FakeApplication(
    override val path: java.io.File = new java.io.File("."), 
    override val classloader: ClassLoader = classOf[FakeApplication].getClassLoader, 
    additionalPlugins: Seq[String] = Nil, 
    withoutPlugins: Seq[String] = Nil, 
    additionalConfiguration: Map[String, _ <: Any] = Map.empty, 
    withGlobal: Option[play.api.GlobalSettings] = None, 
    withRoutes: PartialFunction[(String, String), Handler] = PartialFunction.empty) extends Application { 

private val app: Application = new GuiceApplicationBuilder() 
    .in(Environment(path, classloader, Mode.Test)) 
    .global(withGlobal.orNull) 
    .configure(additionalConfiguration) 
    .bindings(
    bind[FakePluginsConfig] to FakePluginsConfig(additionalPlugins, withoutPlugins), 
    bind[FakeRouterConfig] to FakeRouterConfig(withRoutes)) 
    .overrides(
    bind[Plugins].toProvider[FakePluginsProvider], 
    bind[Router].toProvider[FakeRouterProvider]) 
    .build 

Quindi non c'è modo per me di intercettare in GuiceApplicationBuilder e sovrascrivere attacchi.

Sono nuovo per giocare su file così spiacente se la domanda sembra un po 'sciocca. Grazie!

risposta

-1

Probabilmente si sta utilizzando una versione precedente di ScalaTestPlus, che non supportava l'override di FakeApplication con Application. In Play docs (Play 2.4) la versione della libreria è "1.4.0-M3" ma dovrebbe essere "1.4.0".