播放2.3.x:多项目,禁用BoneCP

时间:2015-06-03 14:26:26

标签: scala testing playframework playframework-2.3 specs2

我有一些Play项目和一些子项目。其中一个子项目需要JDBC,所以BoneCP(访问MySQL数据库)。

另一方面,根项目根本不需要JDBC

我的问题是: JDBC在子项目的build.sbt中声明。当我运行所有测试时,在这种情况下根项目测试,BoneCP被初始化,即使在子项目中只需要。它在测试过程中给我带来了一些问题:

Configuration error[Cannot connect to database [default]]  (Configuration.scala:94)

我可以指定Play仅对子项目使用JDBC吗?或者我可以在根项目中禁用JDBCBoneCP吗?

感谢您的回答。

2 个答案:

答案 0 :(得分:0)

对于单元测试,我会说创建一个提供公共FakeApplication的测试实用程序对象。然后,您可以在单元测试中重复使用此FakeApp。 FakeApplication的构造函数参数之一是withoutPlugins,您可以利用它来在单元测试期间关闭插件。

例如,在当前的Play应用中,我们使用ReactiveMongo但不希望在单元测试中使用它。

object MockMyApp extends OurBaseSpec {
 val withoutPlugins = Seq(classOf[ReactiveMongoPlugin].getName)
 val appWithoutIntegrations = FakeApplication(withoutPlugins = withoutPlugins)
}

我们在为单元测试创​​建新应用程序时引用此MockMyApp.appWithoutIntegrations。您还可以在创建FakeApp时指定其他选项。

从一些链接我认为您可能正在寻找在创建FakeApp时设置的其他配置:

    dbplugin=disabled

Answer where above configuration was reason dbplugin wasn't working

Instructions for configuring alternate connection pool look at step#2

   val disabledDbConfig = Map("dbplugin"->"disabled")
   val appWithoutIntegrations = FakeApplication(additionalConfiguration = disabledDbConfig)

答案 1 :(得分:0)

终于明白了!

val withoutPlugins = Seq(classOf[ReactiveMongoPlugin].getName) 就像一个用于禁用ReactiveMongo插件的魅力。

主要问题: additionalConfiguration = Map("dbplugin" -> "disabled", "evolutionplugin" -> "disabled")

测试期间

完全没有JDBC。非常感谢巴里!