繁体   English   中英

用于单元测试的内存文件

[英]In-memory File for unittesting

我想为打印到标准输出的方法编写单元测试。 我已经更改了代码,因此它打印到传入的File实例,而不是默认情况下是stdout 我唯一缺少的是一些我可以传入的内存中的File实例。 有这样的事吗? 有什么建议? 我希望这样的事情有效:

import std.stdio;

void greet(File f = stdout) {
    f.writeln("hello!");
}

unittest {
    greet(inmemory);
    assert(inmemory.content == "hello!\n")
}

void main() {
    greet();
}

用于打印到stdout单元测试代码的任何其他方法?

而不是依赖于相当低级别类型的File ,而是通过接口传递对象。

正如你在评论中所说的那样,Java中的OutputStreamWriter是许多接口的包装器,它被设计成对字节流等的抽象。我也会这样做:

interface OutputWriter {
    public void writeln(string line);
    public string @property content();
    // etc.
}

class YourFile : OutputWriter {
    // handle a File.
}

void greet(ref OutputWriter output) {
    output.writeln("hello!");
}

unittest {

    class FakeFile : OutputWriter {
        // mock the file using an array.
    }

    auto mock = new FakeFile();

    greet(inmemory);
    assert(inmemory.content == "hello!\n")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM