模拟具有特征的类

Sta*_*lin 2 scala mocking traits

是否有任何库提供用于模拟具有特征的类的工具(两者都可以是有状态的)?

简化示例:

trait T {
  var xx: List[Int] = List[Int]()
  def t(x: Int) {
    xx ::= x    //throws NPE, xx == null, even after implicit initialization
  }
}

class A extends T {
}

class Testable(a: A) {
  def bar() {
    a.t(2)
  }
}

@Test def testFoo() {
  val a: A = mock[A]
  val testable = new Testable(a)
  testable.bar()
  verify(a).t(2)
}
Run Code Online (Sandbox Code Playgroud)

Arj*_*ijl 5

Paul Butcher一直在研究Scala模拟库Borachio.它支持模拟特征,类,函数和对象.有关更多信息,请参阅以下博客:

http://www.paulbutcher.com/2011/02/announcing-borachio-native-scala-mocking/ http://www.paulbutcher.com/2011/07/power-mocking-in-scala-with-borachio/