使用 scalamock 模拟在构造函数中执行"work"的对象



我正在尝试模拟一个类,它接受一些ctor参数并在构造函数中做一些工作。

除了包装我试图模拟的顽皮类之外,ScalaMock中是否有任何东西可以避免调用构造函数(因为它目前在构造方法中抛出了一个NPE(

不,这是不可能的。所有mock都是要mock的类型的子类,因此将始终调用构造函数。但是,您可以为构造函数中使用的类型构造mock,并指定具体的子类型。例如

import ConstructorWorkaroundTest.{HardToMock, Something}
import org.scalamock.scalatest.MockFactory
import org.scalatest.FunSuite
class ConstructorWorkaroundTest extends FunSuite with MockFactory {
test("does not work") {
val m = mock[HardToMock]
}
test("works") {
val s = stub[Something]
class BetterToMock extends HardToMock(s)
val m = mock[BetterToMock]
m.foo _ expects() returning "hello" once()
m.foo()
}
}
object ConstructorWorkaroundTest {
trait Something { def length: Int }
class HardToMock(s: Something) {
val naughty = s.length
def foo() = "hi"
}
}

相关内容

  • 没有找到相关文章

最新更新