用对象单元测试特征

时间:2014-11-11 03:00:52

标签: scala unit-testing 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
}

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
}

如果我删除隐含它可以...

1 个答案:

答案 0 :(得分:3)

您应该使用服务覆盖创建一个对象。

  object FakeImpl extends DataServiceLocalImpl {
    override dataService = //Fake or test data service here
  }

然后创建一个允许您测试特征的匿名类定义。