有没有办法创建一个给定类型的对象来覆盖方法的子集并为其余方法抛出运行时异常?
它甚至不需要访问超类的任何实现。它只需要在编译时和运行时具有相同的类型。
答案 0 :(得分:6)
这几乎就是ScalaMock模拟对象开箱即用的方法 - 你设定期望的方法做任何期望告诉他们做的事情,所有其他人抛出ExpectationException。
你的用例是什么?
答案 1 :(得分:3)
正如Paul所说,ScalaMock是一个很好的方法。
但我想指出你只是在描述基本的继承:
class OriginalClass {
def methodToRun() = { println("called OriginalClass.methodToRun") }
def methodNotToRun() = { println("called OriginalClass.methodNotToRun") }
}
class MockOriginalClass extends OriginalClass {
override def methodToRun() = super.methodToRun()
override def methodNotToRun() = throw new RuntimeException("you weren't supposed to run this!")
}
然后,在您的代码中,您期望OriginalClass
对象可以传入MockOriginalClass
,并且当您调用错误的内容时会抛出错误。