如何模拟输出流?
通过“输出蒸汽”,我的意思是任何接收字节序列,字符或其他任何东西的对象。所以,java.io.OutputStream,还有java.io.Writer,javax.xml.stream.XMLStreamWriter的writeCharacters方法,等等。
我正在为一个类编写基于模拟的测试,该类的主要功能是将数据流写入其中一个类(XMLStreamWriter,碰巧)。
问题在于,数据流是在对 write 方法的一系列调用中写入的,但重要的不是调用,而是数据。例如,给定一个 XMLStreamWriter ,这些:out
out.writeCharacters("Hello, ");
out.writeCharacters("world!");
等效于此:
out.writeCharacters("Hello, world!");
发生这种情况(就我而言)真的无关紧要。会有一些特定的调用序列,但我不在乎它是什么,所以我不想写那个特定序列的期望。我只想期望以任何一种方式写入某个数据流。
一种选择是切换到基于状态的测试。我可以在缓冲区中积累数据,并对此做出断言。但是因为我正在编写XML,这意味着要做出一些相当复杂和丑陋的断言。嘲笑似乎是处理编写 XML 这一更大问题的更好方法。
那么我该如何用模拟来做到这一点呢?
我正在使用Moxie进行模拟,但我有兴趣听到任何模拟库的方法。