我对java还是很陌生,我想知道是否有人可以指出我正确的方向。 我正在尝试模拟(使用模仿)具有以下代码的方法:
package io.shido.event;
import org.junit.jupiter.api.Test;
final class PrototypeTest {
@Test
void instantiate() {
final Prototype event = Prototype.???
}
}
我在网上得到一个ClassCastException:
Channel channel = session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
channel.setInputStream(null);
例外情况如下:
((ChannelExec)channel).setCommand(command);
这是我的单元测试:
java.lang.ClassCastException: com.jcraft.jsch.Channel$$EnhancerByMockitoWithCGLIB$$15aeab7e cannot be cast to com.jcraft.jsch.ChannelExec
Channel是一个抽象类,ChannelExec是一个pojo
答案 0 :(得分:2)
尝试
when(session.openChannel("exec")).thenReturn(channelExec);
存在差异,因为您当前正在返回抽象类的模拟并将其转换为其隐含形式之一。
答案 1 :(得分:2)
如果您希望openChannel返回ChannelExec
Channel channel = session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
您需要指定
when(session.openChannel("exec")).thenReturn(channelExec);