我想测试两个服务:
>构建文件名的服务
>将一些数据写入第一服务提供的文件的服务
首先我要构建一些复杂的文件结构(例如{user} / {date} / {time} / {generatedId} .bin)
第二,我将数据写入第一服务传递的文件(第一服务调用第二服务)
如何使用模拟测试这两种服务而不进行任何真正的IO交互?
仅举例如:
第一服务:
public class DefaultLogService implements LogService
{
public void log(SomeComplexData data)
{
serializer.write(new FileOutputStream(buildComplexFileStructure()), data);
or
serializer.write(buildComplexFileStructure(), data);
or
serializer.write(new GenericInputEntity(buildComplexFileStructure()), data);
}
private ComplextDataSerializer serializer; // mocked in tests
}
第二服务:
public class DefaultComplexDataSerializer implements ComplexDataSerializer
{
void write(InputStream stream, SomeComplexData data) {...}
or
void write(File file, SomeCompexData data) {...}
or
void write(GenericInputEntity entity, SomeComplexData data) {...}
}
在第一种情况下,我需要传递FileOutputStream,它将创建一个文件(即我不能测试第一个服务)
在第二种情况下,我需要传递文件.如果我需要测试将写入指定文件的数据,我在第二次服务测试中该怎么办? (我无法测试第二次服务)
在第三种情况下,我认为我需要一些通用IO对象,它将包装文件.
也许为此目的有一些现成的解决方案?