我想将应用程序特性实例测试从
GuiceOneAppPerSuite
到
GuiceOneAppPerTest
. 因为
GuiceOneAppPerSuite指南
这是原始文件
trait MyAppOneApp extends PlaySpec with Results with GuiceOneAppPerSuite with MockitoSugar {
implicit val ec: ExecutionContext = app.injector.instanceOf[ExecutionContext]
implicit val sys = ActorSystem("MyTest")
implicit val mat = ActorMaterializer()
val dataSource = PRODUCTION
implicit override lazy val app = new GuiceApplicationBuilder()
.in(Mode.Test)
.overrides(myAppModule)
.build()
// Repositories
val itemRepository = app.injector.instanceOf[ItemRepositoryImpl]
// Services
val itemService = app.injector.instanceOf[ItemServiceImpl]
//Controllers
val itemController = app.injector.instanceOf[ItemController]
}
当我想换衣服的时候
trait MyAppOneApp extends PlaySpec with Results with GuiceOneAppPerTest with MockitoSugar {
implicit val ec: ExecutionContext = app.injector.instanceOf[ExecutionContext]
implicit val sys = ActorSystem("MyTest")
implicit val mat = ActorMaterializer()
val dataSource = PRODUCTION
override def newAppForTest(td: TestData) = new GuiceApplicationBuilder()
.in(Mode.Test)
.overrides(myAppModule)
.build()
// Repositories
val itemRepository = app.injector.instanceOf[ItemRepositoryImpl]
// Services
val itemService = app.injector.instanceOf[ItemServiceImpl]
//Controllers
val itemController = app.injector.instanceOf[ItemController]
}
我得到一个NullPointerException
java.lang.NullPointerException:
[info] at functional.common.MyAppOneApp.$init$(MyAppOneApp.scala:25)
[info] at functional.models.repositories.implementations.ItemRepositoryImplSpec.<init>(ItemRepositoryImplSpec.scala:9)
[info] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[info] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[info] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[info] at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[info] at java.lang.Class.newInstance(Class.java:442)
[info] at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:435)
[info] at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:304)
[info] at java.util.concurrent.FutureTask.run(FutureTask.java:266)