【发布时间】:2016-03-17 17:34:17
【问题描述】:
我们在一个项目中使用 Kafka 客户端。 我正在尝试通过 JMockit 从 Kafka 客户端模拟一个静态方法:
new NonStrictExpectations() {
{
new MockUp<Consumer>()
{
@Mock
ConsumerConnector createJavaConsumerConnector(
ConsumerConfig c){
return null;
}
};
}
};
看起来 JMockit 由于某种原因无法正常工作。我确信 JMockit 用于模拟静态方法的语法。这是错误:
java.lang.IllegalArgumentException: Matching real methods not found for the following mocks:
dispatcher.DispatcherTests$1$1#createJavaConsumerConnector(kafka.consumer.ConsumerConfig)
如果这不起作用,因为 Kafka 客户端代码在 Scala 中,我的程序如何工作?
【问题讨论】:
-
我正在使用 JMockit,并且我知道如何模拟静态方法。它只是不适用于上述 Scala 代码。
-
抱歉,混淆了两个模拟库
-
假设
Consumer是一个 Scala object,从 Java 中引用其类型的方法是Consumer$- 所以你可能想尝试将new MockUp<Consumer>()替换为new MockUp<Consumer$>() -
好吧,它不能用那个编译
-
为什么有人会把
MockUpinside 一个期望块?
标签: scala unit-testing apache-kafka jmockit kafka-consumer-api