2017-08-15 3 views
2

最近、config-jsをJestテストに統合して、構成可能なWebサイトのURLと資格情報を取得しましたが、今では私のテストが完全に完了していません。一般に、コマンドラインからnpm testを実行し、テストが実行され、コマンドラインプロンプトが返されます。テストでconfig-jsを使用すると、テスト部分は終了しますが、コマンドラインがハングするだけです。プロンプトに戻るにはCtrl + Cキーを押します。 は、私はいくつかの実験をした、と私はこれが原因fs.watchFileのコンフィグ-JSの使用にあるかなり確信している:私はこれらの行をコメントアウトするとノードfs.watchFileがテストを完了しないようにする理由は何ですか?

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

、すべてが正常に動作します。 代わりにfs.watchを使用しようとしましたが、修正されません。 私は実際にテストでconfigファイルの変更やホットリロードを行っていません。

場合、それは便利ですが、ここではテストです:

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" 
    } 
} 

答えて

3

これはfs.watchFile documentationで説明されています

persistent<boolean>ファイルがbである限りプロセスを実行し続けるかどうかを示します見た。デフォルト:

他のすべての操作が完了したときにプロセスを終了することを可能にするfalseに永続的なオプションを設定します。

fs.watchFile(this.pathToConfigFile, {persistent: false}, function() { 
    self.loadConfig(self.pathToDefaults, self.pathToConfigFile, self.region); 
}) 
関連する問題