2017-10-10 40 views
0

我試圖存根一個名爲「生產者」類具有以下特徵:無法存根與重載的構造一類 - Scalamock

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]]

以下是錯誤: enter image description here

我一直堅持這個問題一段時間了。有沒有一種方法可以創建這個存根對象?任何幫助,將不勝感激。

最好的問候。

回答

0

不是一個確切的答案,因爲我現在沒有IDE,也不確定你使用哪個版本的scalamock,kafka,scala,但希望這可以給你一個有效的想法。

我會將你的類型子類化爲模擬,並明確指出子類引用的構造函數。

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

要知道,在創建存根時Producer類的所有副作用將繼續運行,它可以給一些意想不到的NPE