2017-04-01 124 views
0

在我TestSpec類我有一大堆的屬性和它的起始的擁擠,是這樣的:方便的方法將班級成員帶到外部班級或特質?

implicit val formats: Formats = DefaultFormats 

    val client: WSClient = app.injector.instanceOf[WSClient] 
    val env: Environment = app.injector.instanceOf[Environment] 
    val config: Configuration = app.configuration 
    val j4s: Json4s = app.injector.instanceOf[Json4s] 
    val actSys: ActorSystem = app.injector.instanceOf[ActorSystem] 
    implicit lazy val materializer: Materializer = app.materializer 

    // mocking service 
    val myService: ChironApiService = mock[MyService] 

    val rawTextModel: String = 
    """{"message":"a message","reason":"Done","list":[34,2,12]}""" 
    val badResponseModel: ModelOne = JsonMethods.parse(rawTextModel).extract[BadResModel] 

    val futureOfEither: Future[Either[String, Int]] = Future(Left("fr")) 
. 
. 
. 

,所以我想取出來的特質而這種特質增加TestSpec,然後我可以訪問信息,有沒有更優雅的Scala方式來做這樣的事情?

感謝

回答

0

你可以嘗試像

trait TestConfig { 
    val client: WSClient = app.injector.instanceOf[WSClient] 
    val env: Environment = app.injector.instanceOf[Environment] 
    val config: Configuration = app.configuration 
    val j4s: Json4s = app.injector.instanceOf[Json4s] 
    val actSys: ActorSystem = app.injector.instanceOf[ActorSystem] 
    implicit lazy val materializer: Materializer = app.materializer 
} 

class TestSpec extends TestConfig { 
    // mocking service 
    val myService: ChironApiService = mock[MyService] 

    val rawTextModel: String = 
     """{"message":"a message","reason":"Done","list":[34,2,12]}""" 
    val badResponseModel: ModelOne = JsonMethods.parse(rawTextModel).extract[BadResModel] 

    val futureOfEither: Future[Either[String, Int]] = Future(Left("fr")) 
    . 
    . 
    . 
}