我要在其中创建间谍的声明:
Producer<String, String> producer = new KafkaProducer<String, String>(producerProps)
我创建间谍的尝试失败:
def spySvc = GroovySpy(service, global:true)
2 * new service.createKafkaProducer() >> mockedProducer; // fail
2 * new KafkaProducer(_) >> mockedProducer; // fail
2 * new KafkaProducer<String,String>(_) >> mockedProducer; //fail
但是当我将Producer创建分解为自己的方法createKafkaProducer()并像这样对方法调用创建一个间谍时,它就起作用了:
2 * service.createKafkaProducer() >> mockedProducer; // success
有什么想法吗?
(我意识到应该将代码重构为使用正确的DI,然后问题就变得微不足道了,不需要间谍)
答案 0 :(得分:0)
我认为@rafaelim是正确的,KafkaProducer是静态编译的代码,GroovySpies对此不起作用。