【发布时间】:2020-06-03 13:44:54
【问题描述】:
我正在尝试编写单元测试。在我正在测试的类中,我通过构造函数传递了一个 java.net.Socket 对象。这个变量称为connection。在那个类中,有一行:
ObjectInputStream in = new ObjectInputStream(connection.getInputStream());
现在在我的单元测试中,我在创建该类的实例时传递了一个模拟的 Socket 对象。 在我的单元测试中,我正在编写以下内容:
when(socket.getInputStream()).thenReturn(getInputStream());
private InputStream getInputStream() throws IOException
{
InputStream d = new ReaderInputStream(new StringReader("test data"));
ObjectInputStream o = new ObjectInputStream(d);
return d;
}
但是在运行时,我收到以下错误:
java.io.StreamCorruptedException: invalid stream header: 64666466
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:278)
不知道如何克服这个问题。错误源于ObjectInputStream o = new ObjectInputStream(d);
【问题讨论】:
标签: java unit-testing junit mocking