我最近将config-js集成到Jest测试中,以获取可配置的网站url和凭据,但是现在我的测试还没有完全完成。 通常,我从命令行运行npm test ,执行测试,并返回命令行提示符。 在测试中使用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"
  }
}

#1楼 票数:3 已采纳

fs.watchFile文档中对此进行了说明

persistent <boolean>指示只要监视文件,该进程是否应继续运行。 默认值: true

将persistent选项设置为false,以允许您的进程在所有其他操作完成后退出:

fs.watchFile(this.pathToConfigFile, {persistent: false}, function () {
    self.loadConfig(self.pathToDefaults, self.pathToConfigFile, self.region);
})

  ask by Mike Hedman translate from so

未解决问题?本站智能推荐:

2回复

Node.JS:“fs.watchFile”如何工作?

根据Node 0.4.3的API文档 , fs.watchFile(filename, [options], listener)函数启动一个例程, 注意filename更改。 每次访问文件时都会调用callback侦听器。 它还说 提供的options应该是一个包含两个成员的对
10回复

为什么fs.watchFile在Node中调用了两次?

Ubuntu 12.04 Node v0.6.14 CoffeeScript 1.3.1 有关gist的完整代码: https : //gist.github.com/2621576 每次我保存一个要监视的文件时,其主要功能称为twitce,而不是一次。 我的编辑器是Sumlime
2回复

fs.watchFile延迟nodejs

如果您运行以下脚本,则会遇到以下问题:该脚本不是在每1秒更新一次上运行,而是每3-5秒运行一次。 这是node.js的错误还是有解决的方法?
1回复

使用Node.js在fs.watchfile上的相对路径

我使用这种方法在文件更改时从文件中读取数据。 我重组了我的项目,现在不再读取数据。 你可以在这里看到我的文件路径。 上面的方法在client.js中,我想参考Data.json。 我试过:“../Data.json”和“/Server/Data.json” 谢谢你的帮助! PS.:我知道有一些线
1回复

如何测试节点的fs.watch()?

我有一个使用fs.watch的函数。 下面的例子。 我正在尝试用玩笑来测试; 但我不清楚如何正确执行。 存在可能的循环。 有人可以帮我了解如何正确测试此方法,并确保我的测试性能良好。
1回复

开玩笑测试fs.unlink功能

我想在玩笑中使用 mock.fs 来测试这个 deleteFile 函数,但我不确定如何。 这是我根据 Stackoverflow 上已经发布的内容进行的尝试,但该函数没有返回。
2回复

Javascript如何与fs.watchFile()中的回调函数的参数匹配

我正在尝试为项目重新创建fs.watchFile(),但是我对特定主题有些困惑。 现在的问题是关于如何这个回调函数的参数CURR和prev被填充? 我检查了节点目录并分析了watchFile()函数的定义,但发现它仅返回stat对象的单个实例。 https://github.com/n
1回复

在异步Jest测试中是否需要完成?

我在 Jest 测试中与一位同事就done()发生了争论。 他在 JavaScript 方面的经验比我多几个数量级,我是在async / await被普遍接受之后加入的,而且来自 .NET 环境,所以我已经习惯了。 我写我的测试是这样的: 他更习惯于承诺,所以会像这样编写他的测试: 他对我对asyn