Scala Argument外部类的捕获

时间:2017-05-02 19:02:28

标签: scala mockito

所以我想检查一下我发送给我无法控制的外部类的参数。假设测试了外部类,我只想测试是否通过了正确的参数。我尝试过ArgumentCaptor等的一些组合,但运气不太好

import org.ABC.ExternalClass

case class Foo(i:Int, j: Int...) { 
  val EC = CreateExternalClass()
  def CreateExternalClass(): ExternalClass = {
   new ExternalClass (i, j, ....many parameters)
  } 
}

1 个答案:

答案 0 :(得分:1)

我认为你在这里弄错了:你只能在调用模拟对象时使用ArgumentCaptor。你不能用它们来“拦截”各种对象之间的任意调用。

含义:如果要使用模拟 ExternalClass对象,则只能使用ArgumentCaptor。但是你不需要捕获,因为你可能只需要方法调用参数验证。

但是,当然,您不能使用Mockito来模拟生产类中对new的调用。你有的选择:

  • 转向PowerMockito或JMockit;允许模拟对new的调用的框架。不建议。
  • 将您的生产代码修改为执行调用new。可能在这里没有帮助;因为这个类可能已经是外部类的包装器
  • 检查创建的对象:检查是否可以使用getter方法简单地查询新创建的对象以获得您希望显示在其中的值