Playframework 构建可测试的我的Play framework应用程序
我一直在利用slick为一个数据驱动的应用程序积累一些关于play框架的知识。我已经学习了activator教程“” 这让我想到了继承DB特性的设计模式。非常有用,因为现在可以通过在内存中旋转一点DB来轻松测试控制器。假设我有两个控制器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
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._
依赖注入
第四个策略?我想我的答案是。。。哎呀 我应该仔细阅读