无法使用重载构造函数存根类-Scalamock

无法使用重载构造函数存根类-Scalamock,scala,unit-testing,scalamock,Scala,Unit Testing,Scalamock,我正在尝试用以下签名来存根一个名为“Producer”的类: class Producer[K, V](private val underlying : kafka.producer.Producer[K, V]) extends scala.AnyRef { def this(config : kafka.producer.ProducerConfig) = { /* compiled code */ } def send(message : kafka.producer.KeyedM

我正在尝试用以下签名来存根一个名为“Producer”的类:

class Producer[K, V](private val underlying : kafka.producer.Producer[K, V]) extends scala.AnyRef {
  def this(config : kafka.producer.ProducerConfig) = { /* compiled code */ }
  def send(message : kafka.producer.KeyedMessage[K, V]) : scala.Unit = { /* compiled code */ }
  def send(messages : java.util.List[kafka.producer.KeyedMessage[K, V]]) : scala.Unit = { /* compiled code */ }
  def close : scala.Unit = { /* compiled code */ }
}
代码
val fakeProducer=stub[Producer[String,String]]

错误如下:

我已经被这个问题困扰了一段时间了。有没有办法创建这个存根对象?任何帮助都将不胜感激


致以最诚挚的问候。

这不是一个确切的答案,因为我现在没有IDE,也不确定您使用的是哪个版本的scalamock、kafka、scala,但希望这能给您一个可行的想法

我会将您的类型子类化为mock,并显式表示子类引用的构造函数

class MockableProducer extends kafka.javaapi.producer.Producer[String, String](null.asInstanceOf[kafka.producer.Producer[String,String])
val producer = stub[MockableProducer]

请注意,创建存根时,
Producer
类的所有副作用仍将运行,这可能会给出一些意外的NPE

不是确切的答案,因为我现在没有IDE,也不确定您使用的是哪个版本的scalamock、kafka、scala,但希望这能给您一个可行的想法

我会将您的类型子类化为mock,并显式表示子类引用的构造函数

class MockableProducer extends kafka.javaapi.producer.Producer[String, String](null.asInstanceOf[kafka.producer.Producer[String,String])
val producer = stub[MockableProducer]
请注意,创建存根时,
Producer
类的所有副作用仍将运行,这可能会产生一些意外的NPE