我的Scala应用程序(Akka服务)有一个PersonBuilder
类
这个PersonBuilder
类有一个REST客户端,可以在构建实体之前检索一些数据。
我的应用程序中任何时候都应该只有一个实例。{/ p>
显然,我可以在这里使用PersonBuilder
对象,但问题是我想在运行单元测试时传入模拟REST客户端。
在Scala中调用被视为不良做法的对象的setter? 如果它完成安全并保证只发生一次,那么肯定这是一种可以采用的技术吗?
显然,也可以使用封装的REST客户端创建一个类,但问题是我在没有依赖注入框架的情况下将所有PersonBuilder
类传递给我的代码。
目前Scala是否有任何约定?
答案 0 :(得分:3)
class PersonBuilder(rest: Rest)
object PersonBuilder extends PersonBuilder(LiveRest)
object TestPersonBuilder extends PersonBuilder(MockRest)
如果你不想要构造函数args,请使用traits。
trait PersonBuilder {
def rest: Rest
}
object PersonBuilder extends PersonBuilder {
override val rest = LiveRest
}