Quindi, secondo Gioca 2.4 documentazione (https://playframework.com/documentation/2.4.x/ScalaTestingWithScalaTest#Unit-Testing-Controllers), il regolatore deve essere impostato come un tratto come questoPlay/Scala iniezione controller nella prova
trait ExampleController {
this: Controller =>
def index() = Action {
Ok("ok")
}
}
object ExampleController extends Controller with ExampleController
in ordine per un test per lavorare in questo modo
class ExampleControllerSpec extends PlaySpec with Results {
class TestController() extends Controller with ExampleController
"Example Page#index" should {
"should be valid" in {
//test code
}
}
}
però, sto usando l'iniezione di dipendenza Guice, e secondo Gioca 2.4 documentazione (https://playframework.com/documentation/2.4.x/ScalaDependencyInjection) il mio controller si presenta così:
@Singleton
class ExampleController @Inject() (exampleService: IExampleService) extends Controller {
def index() = Action {
Ok("")
}
}
Poiché il controller non è più un tratto e non riesco a mescolarlo nel test in questo modo: with ExampleController
, come si esegue il test di cui sopra?
Grazie. A proposito, qualche idea su come iniettare il servizio (che viene iniettato nel controller) nello stesso test? – Caballero
Mi piacerebbe prendere in giro il servizio, ad esempio: utilizzando ScalaMock. – jazmit
Non capisco, quale sarebbe il vantaggio di creare una classe TestController e testarla, invece di testare DirectController? – gun