【发布时间】:2017-04-29 06:56:51
【问题描述】:
我正在做 e2e 测试,并且正在检查是否正在使用此代码修改文件夹:
var watchEvent = false;
fs.watch('/tmp/directory', function(event, folderName) {
watchEvent = true;
console.log("it entered watch");
if (event === "rename" && folderName === currentDirectory) {
console.log("my directory changed");
};
});
expect(watchEvent).toBe(true, "My directory didn't change");
现在我对其进行了测试,它确实有效,当目录更改时,它会进入监视侦听器,打印 "it entered watch" 和 "my directory changed" 但由于此调用是异步的,watchEvent 不会及时更改并且expect 返回false。
现在当它不工作时(所以目录不会改变)它不会打印"it entered watch" 并且expect 返回false。
我正在考虑两种选择:
- 有一种方法可以在手表完全没有变化时进行捕捉(它是如何工作的?它要等待多长时间?)
-
有一种方法可以在变量更改时触发事件(承诺?),例如我可以:
var watchEvent; // 1. watch event is called, and assigns true. // 2. wait for a promise to confirm that `watchEvent` has a value and // run the `expect inside`
P.S. 我也不完全明白fs.watch 是如何等待我的文件夹更改的,什么时候结束?如果什么都没发生,为什么我的测试会结束?
任何帮助将不胜感激。
【问题讨论】:
标签: javascript angularjs node.js asynchronous protractor