繁体   English   中英

用茉莉花运行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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM