scala – 在对象中注入依赖项
发布时间:2020-12-16 18:28:01 所属栏目:安全 来源:网络整理
导读:我是Play框架和 scala的新手,我正试图在一个伴侣对象中注入一个依赖项. 我有一个简单的案例类,如: case class Bar(foo: Int) {} 使用伴侣对象: object Bar { val myDependency = if (isTest) { // Mock } else { // Actual implementation } val form = Fo
我是Play框架和
scala的新手,我正试图在一个伴侣对象中注入一个依赖项.
我有一个简单的案例类,如: case class Bar(foo: Int) {} 使用伴侣对象: object Bar { val myDependency = if (isTest) { // Mock } else { // Actual implementation } val form = Form(mapping( "foo" -> number(0,100).verifying(foo => myDependency.validate(foo)),)(Bar.apply)(Bar.unapply)) } 这很好,但它并不是一个干净的方式.我希望能够在构建时注入依赖项,这样我可以在测试时注入不同的模拟对象,并在开发和生产中注入不同的实际实现. 实现这一目标的最佳方法是什么? 任何帮助真的很感激.谢谢! 解决方法
沿着蛋糕的路线,我们可以尝试将你的例子改为
trait Validator { def validate(foo: Int): Boolean } trait TestValidation { val validator = new Validator { def validate(foo: Int): Boolean = ... } } trait ImplValidation { val validator = new Validator { def validate(foo: Int): Boolean = ... } } trait BarBehavior { def validator: Validator val form = Form(mapping(...))(Bar.apply)(Bar.unapply) } //use this in your tests object TestBar extends BarBehavior with TestValidation //use this in production object ImplBar extends BarBehavior with ImplValidation 您还应该尝试测试此示例是否也适合Play框架 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |