Scalamock拒绝我的嘲弄尝试,说它不支持超过22种方法。
原因是因为在我试图模拟的类中有超过22种方法,所有这些方法都在一起(2是我的,20 +是混合的(来自Akka Json支持))。
任何解决这个限制的方法都不涉及重新考虑混合部分?
我用这种方式,使用了scalatest 3.0.2:
override val apiClient: ApiClient = mock[ApiClient]
(apiClient.getById _).when(15538).returns("data")
谢谢!
答案 0 :(得分:0)
我认为你实际上并不想测试那些JSON和其他mixin函数,所以我建议创建一个抽象特征来定义你的新的可测试签名并将它混合到你的新类中。这样您就不需要更改设计了,这个ApiClient
类的客户甚至可以通过使用特征类型完全解耦。
trait MyFunctionality {
def foo(): Unit
def somethingElse(i: Int): Int
}
class ApiClient extends Baseclass with Stuff with MoreStuff with MyFunctionality {
// ...
}
然后
val m = mock[MyFunctionality]
(m.foo _).expects().once()
// etc
这样,您可以在单元测试时间内防止在类(或基类)构造函数中运行任何代码。 希望有所帮助。
答案 1 :(得分:0)
我最后提出了相同的解决方案,但我真的不喜欢它给我非常简洁的课程增加的噪音。 “C'est la vie”:)