Javascript 为什么节点fs.watchFile阻止测试完成?
我最近集成了一个Jest测试,以获得一个可配置的网站url和凭据,但现在我的测试还没有完全完成。通常,我从命令行运行Javascript 为什么节点fs.watchFile阻止测试完成?,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我最近集成了一个Jest测试,以获得一个可配置的网站url和凭据,但现在我的测试还没有完全完成。通常,我从命令行运行npmtest,执行测试,并返回命令行提示符。在测试中使用config js,测试部分完成,但是命令行挂起,我必须按住ctrl+c键才能返回到提示。 我做了一些实验,我很确定这是由于config js使用了fs.watchFile: fs.watchFile(this.pathToConfigFile, function () { self.loadConfig(self.
npmtest
,执行测试,并返回命令行提示符。在测试中使用config js,测试部分完成,但是命令行挂起,我必须按住ctrl+c键才能返回到提示。
我做了一些实验,我很确定这是由于config js使用了fs.watchFile:
fs.watchFile(this.pathToConfigFile, function () {
self.loadConfig(self.pathToDefaults, self.pathToConfigFile, self.region);
});
当我把这些行注释掉时,一切正常。
我试着用fs.watch来代替,但这并不能解决问题。
正如上面所说,我在测试中并没有对配置文件进行任何更改或热重新加载
如果有帮助,下面是测试:
const Config = require('config-js');
let myConfig = new Config('./my.config.js');
describe('config test', function () {
it('gets the baseUrl', function() {
expect(myConfig.get('testing.baseUrl')).toEqual('http://foo.com');
});
});
下面是配置文件的外观:
module.exports = {
testing: {
baseUrl: "http://foo.com"
}
}
下文对此进行了解释:
persistent
指示只要监视文件,进程是否应继续运行。默认值:true
将persistent选项设置为false,以允许进程在所有其他操作完成后退出:
fs.watchFile(this.pathToConfigFile, {persistent: false}, function () {
self.loadConfig(self.pathToDefaults, self.pathToConfigFile, self.region);
})