Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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 如何测试节点';s fs.watch()?_Javascript_Node.js_Jestjs - Fatal编程技术网

Javascript 如何测试节点';s fs.watch()?

Javascript 如何测试节点';s fs.watch()?,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我有一个使用fs.watch的函数。下面的例子 function listenToFileChange() { fs.watch(fileLocation, "utf-8", async function(event, fileName) { if (event === "change") { dbUp.push(fileName, function() {}); } }); } 我试着用玩笑来测试这一点;但我不清楚如何正确地做。可能存在循环 jest.mo

我有一个使用
fs.watch
的函数。下面的例子

function listenToFileChange() {
  fs.watch(fileLocation, "utf-8", async function(event, fileName) {
    if (event === "change") {
      dbUp.push(fileName, function() {});
    }
  });
}
我试着用玩笑来测试这一点;但我不清楚如何正确地做。可能存在循环

jest.mock("loadBaselineFile", () => jest.fn());

describe("Tests listenToFileChange", () => {
  test(`GIVEN endpoint /info
        WHEN make a request and database and data loader are healthy 
        THEN return an answer with status: pass, statusCode: 200, type:application/health+json`, async () => {
    listenToFileChange();
    fs.writeFileSync(
      `dataLoader/1.json`,
      "{id: '1', amount: '12'}",
      "utf8"
    );
    expect(loadBaselineFile.mock.calls.length).toBeCalledWith(1);
  });

}); 
请有人帮助我了解如何正确测试,并确保我的测试正常进行。

您需要回调:

function listenToFileChange(cb) {
  fs.watch(fileLocation, "utf-8", async function(event, fileName) {
    if (event === "change") {
      dbUp.push(fileName, cb);
    }
  });
}
因此,当文件更改时,您可以在测试中注意到它:

listenToFileChange(()=>{
   changed = true;
   // done();
});
因为这是在测试异步函数,所以在启动事件时需要调用类似“done();”的函数。 如果未调用“done()”,则测试超时将使其失败