ScalaMock:Can';t处理超过22个参数的方法(尚未)

ScalaMock:Can';t处理超过22个参数的方法(尚未),scala,testing,scalamock,Scala,Testing,Scalamock,Scalamock拒绝了我的嘲笑,说它支持的方法还不超过22种 原因是在我试图模拟的类中总共有22个以上的方法(2个是我的,20多个是混合的(来自Akka Json支持)) 有没有办法绕过这个限制,而不需要重新考虑混合部分 我是这样使用的,scalatest 3.0.2: 覆盖val-apiClient:apiClient=mock[apiClient] (apiClient.getById 41;.when(15538).返回(“数据”) 谢谢大家! 我假设您实际上不想测试那些JSON和其

Scalamock拒绝了我的嘲笑,说它支持的方法还不超过22种

原因是在我试图模拟的类中总共有22个以上的方法(2个是我的,20多个是混合的(来自Akka Json支持))

有没有办法绕过这个限制,而不需要重新考虑混合部分

我是这样使用的,scalatest 3.0.2:

覆盖val-apiClient:apiClient=mock[apiClient]
(apiClient.getById 41;.when(15538).返回(“数据”)


谢谢大家!

我假设您实际上不想测试那些JSON和其他mixin函数,所以我建议创建一个抽象特性来定义新的可测试签名,并将其混合到新类中。这样,您就不需要更改设计,而这个
ApiClient
类的客户机甚至可以通过使用trait类型完全解耦

trait MyFunctionality {
  def foo(): Unit
  def somethingElse(i: Int): Int
}

class ApiClient extends Baseclass with Stuff with MoreStuff with MyFunctionality {
  // ...
}
然后

这样,您还可以防止在单元测试期间在类(或基类)构造函数中运行任何代码。
希望这能有所帮助。

最后我提出了相同的解决方案,但我并不喜欢它给我非常简洁的课堂带来的噪音。“C'est la vie”:)

不幸的是,我认为这不是因为对函数/方法的22个参数的限制来自于函数的内心深处。虽然我刚刚遇到了这个可能会有所帮助。
val m = mock[MyFunctionality]
(m.foo _).expects().once()
// etc