我正在使用mockito并试图嘲笑一个scala对象。嘲笑scala对象
object Sample { }
//test
class SomeTest extends Specification with ScalaTest with Mockito {
"mocking should succeed" in {
val mockedSample = mock[Sample]
}
}
这给我两个编译错误。
error: Not found type Sample
error: could not find implicit value for parameter m:
scala.reflect.ClassManifest[<error>]
如果我将样品从对象更改为类,它的工作原理。 是否可以用mockito模拟scala对象?如果是的话如何?
肯定同意这里。你可能会尝试模拟[Sample.type],但我怀疑它在实践中会起作用。我建议让Sample扩展一些界面特征并将其模拟出来。 最大的问题是,如果你想注入你的模拟代替singleton Sample,你必须做一些好的,邪恶的,有趣的反射魔法。如果你有兴趣,我们可以发布。 – jsuereth 2010-08-26 14:56:54
我前几天在查看Mockito源代码以回答相关问题(由于某种原因,现在我找不到),我似乎回想起看到其中一个“模拟”生成器只返回特定值而不是尝试生成替代/变体。 – 2010-08-26 15:14:09
有没有办法用Powermock或类似的方法做到这一点?如果我在伴侣对象上有一个(有效的全局)方法,那么想要嘲笑它的行为似乎是合理的;当然,这是红宝石世界中的一种常见模式。 – Korny 2011-02-01 03:23:28