![](/img/trans.png)
[英]require('fs-extra') not loading: throwing error "Cant find module fs-extra"
[英]Running fs-extra module functions with jasmine doesn't work
仅使用茉莉花 "node_modules/.bin/jasmine" "spec\\test_spec.js"
运行测试时,不会调用fs.remove
不会发生任何事情(没有错误,没有任何反应)。
使用jasmine-node "node_modules/.bin/jasmine-node" "spec\\test_spec.js"
运行测试时,将正确调用fs函数。
但是茉莉花节点不再维护了 ,只用茉莉花就能做所有的事情。 有任何想法吗? 我们应该以不同的方式运行这些测试吗?
在describe块中,我们有afterEach可以正常工作。
afterEach(function () {
sfnc.deleteProjectFolders(projectName);
});
fs.remove没有被调用/没有任何反应
...
var fs = require('fs-extra');
...
exports.deleteProjectFolders = function (listOfFolders, pathToRootFolder) {
....
console.log("This is called correctly");
// This is not called - nothing happens
fs.remove(fl, function (err) {
if (err) {
exports.debugLog("Failed to delete folder {},\n Error: {} ".format(
fl, err), true)
}else{
exports.debugLog("Folder {} deleted.".format(fl));
}
});
}
fs.remove()
是异步调用。 测试必须等待它完成。 我们需要向afterEach函数添加回调 。
简单回调的解决方案:
afterEach(function (done) {
sfnc.deleteProjectFolders(projectName, done);
});
并在函数中:
...
var fs = require('fs-extra');
...
exports.deleteProjectFolders = function (listOfFolders, callback) {
....
fs.remove(fl, function (err) {
if (err) {
exports.debugLog("Failed to delete folder {},\n Error: {} ".format(fl, err), true)
}else{
exports.debugLog("Folder {} deleted.".format(fl));
}
callback()
});
}
或者可以将其写为承诺。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.