我正在试图将一个名为' 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]]
我一直坚持这个问题。有没有办法可以创建这个存根对象?任何帮助将不胜感激。
最诚挚的问候。
答案 0 :(得分:0)
不是一个确切的答案,因为我现在没有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