加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

单元测试 – 如何在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)   

  }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读