2017-10-10 1 views
0

Je suis en train de bouchonner une classe appelée « producteur » avec la signature suivante:Impossible de bouchonner classe avec les constructeurs surchargées - 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 */ } 
} 

le code val fakeProducer = stub[Producer[String, String]]

Suite est l'erreur: enter image description here

J'ai été coincé avec ce problème pendant un certain temps maintenant. Existe-t-il un moyen de créer cet objet stub? Toute aide serait appréciée.

Cordialement.

Répondre

0

Pas une réponse exacte car je n'ai pas d'IDE en ce moment, et je ne sais pas quelle version de scalamock, kafka, scala vous utilisez mais j'espère que cela vous donne une idée qui fonctionne.

Je sous-classerais votre type pour simuler et préciser à quel constructeur la sous-classe fait référence.

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

Sachez que tous les sideeffects de la classe Producer continueront de fonctionner lorsque le talon est créé, ce qui peut donner des NPE inattendues