It is best to deal with mock singles, to work a bit at first on the structure of the singlet itself. Use a property to define operations, and then the object should expand the stroke as follows:
trait Fooable{
def doFoo:String = "foo"
}
object Foo extends Fooable
Then, in any class that needs an object Foo, declare it as input or something that can be set (DI), but instead separate it as a property as follows:
class MyFooUser(foo:Fooable = Foo){
}
, , Fooable. Fooable ( ), . , , , , , , . .