我们正在使用 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/