对于数据驱动的应用程序,我已经在光滑的游戏框架上提炼了一些知识。我已经按照激活器教程' getting start on the right foot with slick'进行了操作。
这使我进入了继承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' app使用持久数据库实例化控制器的版本。测试应用程序有一个H2 DB。然后每个控制器都有一个“验证”功能。方法,检查提供的参数是否对数据库中的数据有效。刺
class PerilQuery extends PerilQueryTrait with AConcreteDBComponent
class RegionQuery extends RegionTrait with AConcreteDBComponent
并测试
class PerilQuery extends PerilQueryTrait with AnH2DBComponent
class RegionQuery extends RegionTrait with AnH2DBComponent
我想要一个组成两种验证方法的第三个控制器......
能够编写控制器方法的推荐策略是什么?它仍然可以测试? 我最初的想法只是在第三个实例化两个控制器,并分别调用方法。他们是无国籍的,所以这样可行,但我认为它很容易测试,因为我认为在编译时需要知道的代码是否是它的产品或测试。
有这两个特征的第三个特征吗?
trait CombinedTrait with PerilQueryTrait with RegionTrait { this: DBComponent => import driver.api._
依赖注入?
第四种策略?
答案 0 :(得分:0)
我想我的答案就在这里......哎呀。
https://www.playframework.com/documentation/2.4.4/ScalaActionsComposition
应该仔细阅读。