elm*_*lto 1 unit-testing scala playframework-2.0
我有以下构造,在那里我有一个
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
}
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
如果我删除隐式它会起作用......
您应该创建一个覆盖服务的对象。
object FakeImpl extends DataServiceLocalImpl {
override dataService = //Fake or test data service here
}
Run Code Online (Sandbox Code Playgroud)
然后创建一个匿名类定义,允许您测试特征。
| 归档时间: |
|
| 查看次数: |
4042 次 |
| 最近记录: |