scala - Play 2.0 集成 TDD/BDD 数据库模型生成

标签 scala playframework playframework-2.0

我们正在使用 Scala 中的 Play 2.0 框架进行第一个项目。我们想知道是否有一个(或多个)现有最佳实践或库用于从集成和端到端测试的“GIVEN”部分生成测试数据?

例如,在 Rails 世界中,一个人可能有一个 cucumber 步骤假设有 10 个用户喜欢巧克力,在幕后将使用 FactoryGirl 或类似的库在数据库;然后,您可以指望测试数据库在测试运行之间自动清空,并且测试在与实际应用程序不同的数据库实例中运行。

在使用 Play 2.0 的 Scala 世界中,我们正在考虑在 MySQL 上使用 Anorm。我们是否应该对测试进行特殊处理以使用内存数据库(注意清除它),并编写代码来简单地在给定 block 中创建和保留案例类?

同样,Play“进化”是否会自动运行以在测试内存数据库中生成生产模式?

感谢您提供帮助,避免在这里重新发明轮子。

最佳答案

自从我提出这个问题以来,我们确定了以下工作流程:

  • 使用 ScalaQuery 0.10.0-M1 和模型案例类
  • 使用 FakeApplication 和内存数据库进行单元和功能测试
  • 使用真实的本地 MySQL 数据库进行集成和端到端测试
  • 正如这个问题中所提出的,我们将保留每个给定的模型
    • 对于单元和功能测试,使用 H2 内存数据库,每个测试都有一个新的数据库,该数据库很棒、速度很快,并且与其他测试隔离,无需清理
    • 对于集成和端到端测试,使用本地 MySQL 数据库,测试共享数据库。我们目前对每个 GIVEN 使用随机数据,以便测试不会相互影响,并定期清除我们的本地数据库

到目前为止,这个过程对我们来说效果相当好,但有一些问题是其他 StackOverflow 问题的主题(待办事项:在此处链接到这些问题)

回答我上面的问题:是的,每次启动内存数据库时都会运行演化。

关于scala - Play 2.0 集成 TDD/BDD 数据库模型生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10955373/

相关文章:

scala - 隐式超出 Spray 示例代码 : what's happening here? 的范围

scala - Apache 弗林克 : Cannot write out complex data type for Parquet

scala - 在 Spark Scala 中动态创建数据帧

playframework - 用 <br> 标签替换\n

java - 如何更改 Play Framework 2 "test"设置以显示完整的堆栈跟踪?

java - 如何在单个位置修改响应

java - 消耗掉所有 Kafka 主题然后立即断开连接?

playframework - 开发与生产中不同的 sbt-web 管道任务设置?

javascript - 在 Twirl 模板中将 Scala JsValue 转换为 JavaScript 对象

playframework-2.0 - 当存在多个测试用例时 Play 2.0 Akka 系统关闭