我有以下构造,我有
trait DataServiceLocalImpl extends DataService {
override lazy val dataService = DataComponentLocalImpl
}
object DataComponentLocalImpl extends DataComponent {
def getData(element:String):String = GetStuffFromFile(element)
}
trait DataService {
val dataService: DataComponent
}
trait DataComponent {
def getData(element:String):String
}
GetStuffFromFile从磁盘读取一次文件(我只希望这一次,因此对象),创建一个地图,然后返回元素的值。
这一切都是在Play Framework 2.3周围完成的,应用也可以,但是当我在测试中使用它作为隐式时我得到以下错误:
java.lang.NoClassDefFoundError: Could not initialize class DataComponentLocalImpl
测试套件:
class AutoCompleteSpec extends PlaySpec with Mockito with OneAppPerSuite {
val resource = new DataServiceLocalImpl {}
implicit val dataService = resource.dataService
}
如果我删除隐含它可以...
答案 0 :(得分:3)
您应该使用服务覆盖创建一个对象。
object FakeImpl extends DataServiceLocalImpl {
override dataService = //Fake or test data service here
}
然后创建一个允许您测试特征的匿名类定义。