如何编写特殊testing用例的可testing代码

我有一个asynchronousreadFile(path,callback)函数。

它第一次读取文件时,会从文件系统中读取文件。 它会将内容保存到内存中。

之后当相同的文件被读取时,它只是从内存中返回内容而不是再次打开文件系统。

我遇到的问题是如何testing这种机制在testing套件中的工作,因为方法调用无法知道内容是从文件系统还是内存中返回。

我如何实现readFile(),所以它的cachingfunction是可testing的?

你嘲笑本机文件的开瓶器。

为什么不使用你的调用读取文件,然后修改文件,然后尝试再次读取文件。 如果它和第一次相同,和第二次不同,那么它将起作用。 或者,你可以暴露它caching的variables,并修改它,并检查它。

为什么我以前没有想过呢? 我可以通过一个标志进入callback(err,content,fromMemory),指出是否来自文件系统或内存:)

在代码级别上,你肯定应该检查内容是否存在于caching中,如果不是,则返回caching。 这个检查可以被嘲弄为在一个情况下返回true,在另一个情况下为false,你可以写一个testing。 希望我在这里有道理。