如何删除在 Play 框架和 slick 的单元测试中创建会话的代码

2024-01-30

我正在使用 play 2.0 和 slick。所以我为这样的模型编写单元测试。

describe("add") {
  it("questions be save") {
    Database.forURL("jdbc:h2:mem:test1", driver = "org.h2.Driver") withSession {
      // given
      Questions.ddl.create
      Questions.add(questionFixture)
      // when
      val q = Questions.findById(1)
      // then
      // assert!!!
    }
  }
}

它运行良好,但以下片段在每个单元测试中都会重复。

Database.forURL("jdbc:h2:mem:test1", driver = "org.h2.Driver") withSession {
  Questions.ddl.create
  // test code
}

所以,我想将此代码移至块之前,如下所示。

before {
    Database.forURL("jdbc:h2:mem:test1", driver = "org.h2.Driver") withSession {
        Questions.ddl.create
    }
}

describe("add") {
  it("questions be save") {
    // given
    Questions.add(questionFixture)
    // when
    val q = Questions.findById(1)
    // then
    // assert!!!
    }
  }
}

我可以在 before 块中创建会话,然后在单元测试中使用该会话吗?


您可以使用 createSession() 并自行处理生命周期。我习惯了 JUnit,我不知道您正在使用的测试框架的具体细节,但它应该看起来像这样:

// Don't import threadLocalSession, use this instead:
implicit var session: Session = _

before {
  session = Database.forURL(...).createSession()
}

// Your tests go here

after {
  session.close()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何删除在 Play 框架和 slick 的单元测试中创建会话的代码 的相关文章

随机推荐

  • Windows 窗体:播放声音,但不是从头开始

    我想在我的设备中播放曲目 wav 文件 Windows Forms Application 但我不希望它从头开始播放 而是从曲目中的某个点开始播放 假设 10 秒 从头开始播放曲目没有问题 private void playSimpleSo
  • OpenCV 错误:Python 中的未知错误代码 -49

    我正在尝试使用 cv2 在 python 3 6 中学习人脸检测 我按照书上给出的src进行操作 我已经安装了opencv python 3 2 0 by pip xml 和 jpg 文件都与 python 代码位于同一路径中 from n
  • 拉拉维尔。如果数据库正在播种,则禁用观察者方法

    我的用户模型有一个观察者 在我的观察者 gt 创建的事件中我有一些代码 public function created User user sendEmail 因此 我们的想法是 当创建用户时 系统将向用户发送帐户已创建的电子邮件通知 问题
  • 如何使用 mvn site:site 生成站点?

    我想用mvn生成一个站点 但是我无法配置它来生成index html 我可以运行不同的报告 例如 mvn javadoc javadoc generates target site apidocs mvn cobertura cobertu
  • 如何处理 UI 的 Lambda/API 网关的 Cognito 身份验证重定向?

    当我进入 Cognito 身份验证页面时 https example auth us east 1 amazoncognito com login response type token client id xxxxxxxxxxxxxxxx
  • Mongodb:$in 运算符与大量单个查询

    我知道 MongoDB 能够每秒处理大量请求 但假设我必须根据给定的 id 查询集合的大量文档 什么听起来更好 在 id 属性上使用我想要获取的所有 id 创建 in 或者循环 findOne 查询 我肯定会使用 in 查询并提供 ids
  • 如何从 SqlAlchemy 创建和恢复备份?

    我正在编写一个 Pylons 应用程序 并尝试创建一个简单的备份系统 其中每个表都被序列化并压缩成一个文件 供管理员下载 并在发生不良情况时用于恢复应用程序 我可以使用以下命令很好地序列化我的表数据SqlAlchemy 序列化器 https
  • 如何通过 JavaScript/JQuery 将 HTML 文档添加到
    中?

    如何将 HTML 文档添加到 div div 通过 JavaScript JQuery 这就是我到目前为止所拥有的 emailBodyIninclude html
  • Azure Functions - 事件中心不触发函数

    我有一个 Azure 基础架构 2 个 HTTP 函数 gt 事件中心 gt 2 个函数 gt 表存储 因此两个 http 函数将消息发送到事件中心 以及两个由事件中心中的消息触发的函数 其中之一将消息保存在表存储中 基础结构每天由 Azu
  • 如何寻址 OData Url 中使用复合身份密钥的实体?

    我有一个实体订单项具有OrderId and 产品编号整数字段 这两个字段构成身份密钥 主密钥对于这张表 我想用OData Web API通过服务公开此类实体并能够选择订单项目他们的实例复合ID 的格式应该是什么URL 是否有处理此类场景的
  • Spark重新分区落入单个分区

    我正在学习spark 当我使用以下表达式在pyspark shell中测试repartition 函数时 我观察到一个非常奇怪的结果 之后所有元素都落入同一个分区repartition 功能 在这里 我用了glom 了解 rdd 内的分区
  • x86 保护模式下段寄存器的用途是什么?

    我需要修改一些dll 但我不知道段寄存器到底是做什么的 DS SS 处于保护模式 我在学校学到了真正的 16 位模式 其中段寄存器乘以 16 加上普通寄存器中的偏移量给出了物理内存中的有效地址 在保护模式下 有一些平面内存模型和虚拟内存 其
  • 如何在cheerio中获取div的childNodes?

    我想使用cheerio 获取div 的第一个childNode 我使用 javascript dom 操作来获取它 但无法在cheerio 上获取它 我已经在开发工具中尝试过并得到了预期的结果 但我想通过使用cheerio来实现 javas
  • 尽管使用“-webkit-user-select: none”,Chrome 仍会复制文本

    我想在表中创建一个不可复制的元素 因为可读性更好 在 Firefox 中它工作正常 如果您选择所有内容并复制它 则不会复制特定的文本元素 遗憾的是在 Chrome 中这不起作用 事实上 浏览器不会选择文本 而是复制它 td Test2 td
  • 如何在Android中的日期选择器中设置特定日期

    我尝试了很多 但一切都不起作用 我需要我的日期选择器 日期从 2014 年 9 月 1 日开始 但它从 1900 年开始 我设置了最小日期概念 它会消失所有过去的日期 请大家帮忙 public void onCreate Bundle sa
  • 使用 BaseX 查询 XML 文件

    我正在使用 BaseX 本机 XML 数据库来查询 XML 文件 我正在使用 BaseX 文档中提供的 BaseXClient java 文件 我正在启动 Basex 服务器并使用 BaseXClient java 连接到服务器 creat
  • Grails 无法解码 unicode 字符

    我的 Grails 应用程序有以下配置 圣杯 1 3 7在 config groovy 文件中设置以下内容 grails views default codec none grails views gsp encoding UTF 8 gr
  • Eclipse 无法识别 src/main/webapp 目录

    I use m2eclipse在 Eclipse 中导入 Maven Java 项目 它无法识别src main webapp作为源目录 以图形方式在包资源管理器中 或者当我查看Java 构建路径在项目的属性中 该目录不在源文件夹列表中 同
  • 使用指针进行 C++ 类型转换

    我有 C 和 Java 背景 我似乎无法理解 C 中指针转换的含义 例如 int x 1 char c char x 它有什么作用 它有什么用 在您的两个示例中 您都犯了错误 导致代码无法编译 所以我假设您正在尝试执行以下操作 int x
  • 如何删除在 Play 框架和 slick 的单元测试中创建会话的代码

    我正在使用 play 2 0 和 slick 所以我为这样的模型编写单元测试 describe add it questions be save Database forURL jdbc h2 mem test1 driver org h2