识别scala类的方法/属性 - 可能的mocks记录称为方法?

时间:2015-01-23 16:00:58

标签: scala properties mocking

我希望能够指定一个没有在易于模拟的特征中定义的类的任意属性(val或def)。其动机是为实体提供灵活的引用 - 一对'值,要与之匹配的对象的属性,如下所示:

case class Employee(id :Long, name :String)
case class Ref[E, T](value :T, property :Property[E])

def Ref[E, T](prop :E=>T, value :T) = new Ref(value, Property(prop))

使用它像:

val ref = Ref[Employee](_.name, "Motoko")
val major :Employee = repository(ref).head.get

任务是实现Property类,以便在

行中进行任意两次调用
Property[Employee](_.name)
...
Property[Employee](e=> e.name)

将返回相等的实例,并且存储库实现可以使用内部映射Map [Property,Query]为传递的引用创建适当的选择。我的第一次尝试是使用javaassist来拦截和记录方法调用,并使用接收的overriden方法作为属性标识符,但是在模拟创建期间它甚至在到达我的处理程序之前在一些合成的scala init方法上产生了NoSuchMethodError。我觉得像scalamock这样的scala库应该很容易实现,但是我无法在API中找到相关的功能。

0 个答案:

没有答案