如何在 Play Framework v2 中指定自定义数据库连接参数以进行测试?

Posted

技术标签:

【中文标题】如何在 Play Framework v2 中指定自定义数据库连接参数以进行测试?【英文标题】:How to specify custom database-connection parameters for testing purposes in Play Framework v2? 【发布时间】:2012-09-06 01:50:31 【问题描述】:

我想针对不同的 PostgreSQL 数据库运行我的测试,而不是使用内存数据库选项或为本地应用程序设置配置的默认数据库(通过 db.default.url 配置变量)。我尝试使用%test.db 和相关的配置变量(如seen here),但这似乎不起作用;我认为这些说明适用于 Play Framework v1。

仅供参考,测试数据库将预先定义其架构,并且不需要在每次测试运行时创建和销毁。 (虽然,我不介意它是否在每次测试运行时重新创建和销毁,但我不想使用“进化”来这样做;我现在正在使用一个 SQL 模式文件.)

【问题讨论】:

【参考方案1】:

在本地开发时使用alternative configuration files 覆盖数据库凭据(和其他设置),即。如other answer (Update 1) 中所述。

提示:在开发和生产中使用不同类型的数据库会很快导致错误和错误,因此最好在本地安装相同的数据库进行开发和测试。

【讨论】:

仅供参考,我没有使用“不同种类”的数据库,甚至没有使用不同的模式,只是不同的数据库(因此开发数据不会被测试套件干扰)。无论如何,我使用了配置参数的命令行覆盖:play -Ddb.default.url="postgres://dbuser:pass@localhost/testdb" test。然后我将该命令放入 shell 脚本中以便于执行。谢谢!【参考方案2】:

我们能够在 Play 2.x 的基础上实现 Play 1.x 风格的配置 - 尽管我敢打赌 Play 的创建者听到这个消息时会畏缩。

代码不太可共享,但基本上,您只需覆盖 GlobalSettings 中的“配置”方法:http://www.playframework.org/documentation/api/2.0.3/scala/index.html#play.api.GlobalSettings

您可以检查某些系统的 conf 设置,例如“environment.tag=%test”,然后将“%test.foo=bar”的所有配置覆盖为“foo=bar”。

【讨论】:

以上是关于如何在 Play Framework v2 中指定自定义数据库连接参数以进行测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django REST framework JWT 中指定我自己的数据值?

如何在FullCalendar v2.1.1中指定自定义日期范围?

您可以在 Robot Framework 的命令行调用中指定资源文件吗

如何在实体框架中指定索引提示?

在 Scala Play Framework v2.6.x 中出现 cors 错误

如何在Kotlin中指定递归泛型参数?