0
阅读
我已经得到了我嘲弄,以避免在我的单元测试进行网络调用的方法,它看起来是这样的:JMockit - 模拟响应的InputStream正在JMockit
InputStream sendRequestAndReturnResponseStream(String param1, Map<String, String> param2)
我已经用嘲笑它JMockit如下:
final InputStream byteStream = new ByteArrayInputStream("MyTestString".getBytes(StandardCharsets.UTF_8));
new NonStrictExpectations()
{
{
mockHttpClient.sendRequestAndReturnResponseStream(anyString, null);
result = byteStream;
}
};
当我给它的NonStrictExpectation,其内部POS字段设置为0,因为它不是招”我希望以前在我的测试代码创建ByteArrayInputStream的没有写过。但是,当JMockit从模拟方法返回结果时,对象内部的字段被设置为流的大小,使得看起来该数组已经被读取,可能是由JMockit中的某些内容读取的。
这似乎是一个奇怪的行为,用于在测试代码中定义之间更改对象的内部可变状态,并通过JMockit返回到调用代码。 JMockit在将它提供给我的代码之前是否实际读取了这个InputStream?如果是这样,是否有办法关闭这种行为?