Playframework 构建可测试的我的Play framework应用程序

Playframework 构建可测试的我的Play framework应用程序,playframework,playframework-2.0,slick-3.0,Playframework,Playframework 2.0,Slick 3.0,我一直在利用slick为一个数据驱动的应用程序积累一些关于play框架的知识。我已经学习了activator教程“” 这让我想到了继承DB特性的设计模式。非常有用,因为现在可以通过在内存中旋转一点DB来轻松测试控制器。假设我有两个控制器 trait PerilQueryTrait extends Controller { this: DBComponent => import driver.api._ trait RegionTrait extends Controller { thi

我一直在利用slick为一个数据驱动的应用程序积累一些关于play框架的知识。我已经学习了activator教程“”

这让我想到了继承DB特性的设计模式。非常有用,因为现在可以通过在内存中旋转一点DB来轻松测试控制器。假设我有两个控制器

trait PerilQueryTrait extends Controller {  this: DBComponent => import driver.api._

trait RegionTrait extends Controller { this: DBComponent => import driver.api._

trait DBComponent {

  val driver: JdbcProfile

  import driver.api._

  val db: Database
}
“prod”应用程序使用持久数据库实例化控制器的版本。测试应用程序有一个H2 DB。然后,每个控制器都有一个“validate”方法,该方法根据数据库中的数据检查提供的参数是否有效。刺激

class PerilQuery extends PerilQueryTrait with AConcreteDBComponent
class RegionQuery extends RegionTrait with AConcreteDBComponent
和测试

class PerilQuery extends PerilQueryTrait with AnH2DBComponent
class RegionQuery extends RegionTrait with AnH2DBComponent
我想要第三个控制器,它由两个验证方法组成

以可测试的方式组合控制器方法的推荐策略是什么? 我最初的想法是简单地在第三个中实例化两个控制器,并分别调用这些方法。它们是无状态的,所以可以工作,但我认为它不容易测试,因为我认为代码在编译时需要知道它是prod还是test

有第三个特征和这两个特征吗

trait CombinedTrait with PerilQueryTrait with RegionTrait { this: DBComponent => import driver.api._
依赖注入


第四个策略?

我想我的答案是。。。哎呀

我应该仔细阅读