我想创建一个单元测试来验证流是否已关闭。我的类使用DataputStream修饰它接收的流,这似乎打破了模拟需求功能。
if(song1.equals(song2)){ .... }
特定错误消息:
junit.framework.AssertionFailedError:verify [0]:预期1..1次调用为“关闭”,但被称为0次。
我检查了DataInputStream的源代码,并且正如预期的那样,传递给构造函数的流是它委托close()方法调用的对象。
void testBadMock() {
def mockInputClass = new MockFor(InputStream)
mockInputClass.demand.with {
close() {}
}
def mockInput1 = mockInputClass.proxyInstance()
mockInput1.close()
mockInputClass.verify mockInput1 // passes
def mockInput2 = mockInputClass.proxyInstance()
new DataInputStream(mockInput2).close()
mockInputClass.verify mockInput2 // fails
}
我认为没有理由为什么我的模拟对象没有看到close()方法调用。
答案 0 :(得分:1)
潜在的解决方法:
def mockInput2 = mockInputClass.proxyInstance()
new DataInputStream([close: { mockInput2.close() }] as InputStream).close()
mockInputClass.verify mockInput2