单元测试 – 如何在Play Framework 2.0(Scala)中插入测试数据?
发布时间:2020-12-16 08:47:17 所属栏目:安全 来源:网络整理
导读:我的测试在我的数据库中插入假数据时遇到了一些问题.我试过几种方法,没有运气.在FakeApplication中运行测试时似乎没有运行Global.onStart,尽管我认为我认为它应该可行. object TestGlobal extends GlobalSettings { val config = Map("global" - "controller
我的测试在我的数据库中插入假数据时遇到了一些问题.我试过几种方法,没有运气.在FakeApplication中运行测试时似乎没有运行Global.onStart,尽管我认为我认为它应该可行.
object TestGlobal extends GlobalSettings { val config = Map("global" -> "controllers.TestGlobal") override def onStart(app: play.api.Application) = { // load the data ... } } 在我的测试代码中: private def fakeApp = FakeApplication(additionalConfiguration = ( inMemoryDatabase().toSeq + TestGlobal.config.toSeq ).toMap,additionalPlugins = Seq("plugin.InsertTestDataPlugin")) 然后我在每个测试中使用running(fakeApp). plugin.InsertTestDataPlugin是另一次尝试,但是如果没有在conf / play.plugins中定义插件就无法工作 – 这是不需要的,因为我只想在测试范围内使用此代码. 这些都有用吗?有没有人成功的类似选择? 解决方法
启动应用程序时,无论采用何种模式(dev,prod,test),Global.onStart都应该执行ONCE(并且只执行一次).尝试遵循
the wiki on how to use Global.
在该方法中,您可以检查数据库状态并填充.例如,在Test中,如果你使用内存中的db,它应该是空的,所以做类似于: if(User.findAll.isEmpty) { //code taken from Play 2.0 samples Seq( User("guillaume@sample.com","Guillaume Bort","secret"),User("maxime@sample.com","Maxime Dantec",User("sadek@sample.com","Sadek Drobi",User("erwan@sample.com","Erwan Loisant","secret") ).foreach(User.create) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |