Вам нужно немного инвертировать управление:
1) Сделать FooService
a trait
со всеми нереализованными методами
2) Переименовать ваш FooService
с реализованными методами во что-то как FooServiceImpl
, сделайте его extend FooService
На этом этапе вы должны подумать, какой метод будет частью интерфейса FooService
, а какой будет скрыт внутри FooServiceImpl
. Скорее всего FooService
не нужны оба loadObject
amd get
3) Сделать fooCache
аргументом конструктора в Bar
:
class Bar(fooCache: FooService)
4) При запуске тестов пройти более простую реализацию FooService
:
assert(new Bar(new DummyService)).methodForTest(Nil) == "Expected")