【发布时间】:2017-03-22 15:57:36
【问题描述】:
我有一个通过调用node filename 运行的脚本。我试图对这个文件中的特定功能进行单元测试。问题是当我需要像app = require('../app') 这样的文件时,它会运行整个脚本,而我只想访问导出的函数。有什么办法可以防止文件导入时脚本函数运行?
【问题讨论】:
标签: javascript node.js require
我有一个通过调用node filename 运行的脚本。我试图对这个文件中的特定功能进行单元测试。问题是当我需要像app = require('../app') 这样的文件时,它会运行整个脚本,而我只想访问导出的函数。有什么办法可以防止文件导入时脚本函数运行?
【问题讨论】:
标签: javascript node.js require
对于“我可以阻止脚本运行”来进行单元测试这个问题的答案基本上是否。但是,有许多选项可能对您有所帮助。第一个是通过去掉在 require 上运行的动作来使你的节点模块更加模块化。我的建议是改变它,让它接受一个论点:
node filename run
当存在“运行”参数时,会触发常规操作。这将允许您在文件中要求,该文件始终运行脚本,但没有“运行”,它将不会执行您不想要的操作。您甚至可以使用“测试”选项在测试模式下运行它。我认为不太有用的第二个选项是将要测试的函数移动到它自己的文件中,并将所需的函数放入主要部分。然后,您可以使其可用于单独测试。
【讨论】:
你基本上想要的是部分执行你需要的模块。
所以答案是否定的,除非你修补这个模块的代码。
【讨论】: