Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为特殊测试用例编写可测试代码_Javascript_Design Patterns_Testing_Node.js - Fatal编程技术网

Javascript 如何为特殊测试用例编写可测试代码

Javascript 如何为特殊测试用例编写可测试代码,javascript,design-patterns,testing,node.js,Javascript,Design Patterns,Testing,Node.js,我有一个异步readFile(path,callback)函数 第一次读取文件时,它将从文件系统中读取。它会将内容保存到内存中 之后,当读取同一个文件时,它只会从内存中返回内容,而不会再次访问文件系统 我遇到的问题是如何在测试套件中测试这种机制,因为方法调用无法知道内容是否从文件系统或内存返回 如何实现readFile(),使其缓存功能可测试?为什么我以前没有考虑过这一点。我可以向回调传递一个标志(err、content、fromMemory),指示它是来自文件系统还是内存:)您模拟了本机文件开

我有一个异步readFile(path,callback)函数

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

之后,当读取同一个文件时,它只会从内存中返回内容,而不会再次访问文件系统

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


如何实现readFile(),使其缓存功能可测试?

为什么我以前没有考虑过这一点。我可以向回调传递一个标志(err、content、fromMemory),指示它是来自文件系统还是内存:)

您模拟了本机文件开启器。

为什么不使用调用读取文件,然后修改文件,然后再次尝试读取文件。如果它与第一次相同,但与第二次不同,那么它将起作用。或者,您可以公开它缓存的变量,并对其进行修改和检查。

在代码级别,您肯定应该检查内容是否存在于缓存中,如果没有,请转到文件,否则从缓存中读取返回。 此检查可以模拟为在一种情况下返回true,在另一种情况下返回false,您可以围绕此编写测试。
希望我在这里讲得通。

我应该告诉你,我不喜欢因为个人原因嘲笑外部服务。但是+1推荐了一种最佳做法。我反对用刀子杀人。但我完全赞成用它们来切蔬菜我的意思是,在正确的工作中使用正确的工具不会错。这是使用模拟的完美案例。同意,模拟几乎总是问题的错误答案,但在这种情况下,它们绝对正确。但是,但是,但是,但是。。。编写此测试的全部目的是希望通过例程验证正确的行为。现在你把验证委托给程序本身!大概您的意思是“…然后修改文件…”。这是一个不用模仿任何东西就可以测试例程的好方法+1.