我使用Play-Slick使用Playframework 2.4.6(想要更新到新版本2.5.0)。
我在更改单位和集成测试时遇到问题。 当我想测试我的控制器时,我需要每个测试的默认状态数据库。这意味着应该为每次测试运行进化。
在我的测试中,我使用的是h2 InMemory数据库。
我尝试在testApplication.conf中设置值:
play.evolutions.autoApply=true
play.evolutions.autoApplyDowns=true
evolutionplugin=enabled
applyEvolutions.default=true
applyDownEvolutions.default=true
没有成功。
我正在使用OneAppPerTest特性,因为我希望,这个特性会为每个测试用例重置数据库。 没有成功。
这是我的测试用例的设置:
class MyControllerTest extends FunSuite with OneAppPerTest with OptionValues with MockitoSugar {
implicit override def newAppForTest(td: TestData) = new GuiceApplicationBuilder()
.configure(Map("ehcacheplugin" -> "disabled", "applyDownEvolutions.default" -> "true"))
.build()
}
对于每个测试,我从Guice拿走控制器:
test("test 1") {
val controller = app.injector.instanceOf[MyController]
controller.changeDB // Change
}
当我在控制器上调用我的方法时,它将更改数据库。在我的第二个测试案例中,这种变化仍然存在。
请帮助。
答案 0 :(得分:0)
好的,它适用于:
使用BeforeAndAfterEach
特征
写一个方法:
override def afterEach() { lazy val databaseApi = app.injector.instanceOf[DBApi] val db = databaseApi.database("default") Evolutions.cleanupEvolutions( }