【问题标题】:Play 2.0 database model generation for Integration TDD/BDD用于集成 TDD/BDD 的 Play 2.0 数据库模型生成
【发布时间】:2012-06-12 21:33:30
【问题描述】:

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

例如,在 Rails 世界中,可能有一个黄瓜步骤GIVEN there are 10 users who like chocolate,它在后台将使用 FactoryGirl 或类似的库在数据库中生成这些模型;然后,您可以指望测试数据库在测试运行之间自动清空,并且测试在与实际应用程序不同的数据库实例中运行。

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

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

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

【问题讨论】:

  • @streetpc 是的,在下面添加我自己的答案以记录我们学到的一些内容

标签: scala playframework playframework-2.0


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2018-12-12
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多