运行 jasmine 的 fs-extra 模块功能不起作用
Running fs-extra module functions with jasmine doesn't work
当 运行仅使用 jasmine "node_modules/.bin/jasmine" "spec\test_spec.js"
ing 测试时 fs.remove
未被调用 - 没有任何反应(没有错误,没有) .
当 运行ning 测试使用 jasmine-node "node_modules/.bin/jasmine-node" "spec\test_spec.js"
fs 函数被正确调用。
但是 jasmine-node 不是 maintained anymore,应该可以用 jasmine 做所有事情。有任何想法吗?我们应该 运行 以不同的方式进行这些测试吗?
在 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()
是异步调用。测试必须等待它完成。我们需要将 callback 添加到 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()
});
}
也可以写成promise
当 运行仅使用 jasmine "node_modules/.bin/jasmine" "spec\test_spec.js"
ing 测试时 fs.remove
未被调用 - 没有任何反应(没有错误,没有) .
当 运行ning 测试使用 jasmine-node "node_modules/.bin/jasmine-node" "spec\test_spec.js"
fs 函数被正确调用。
但是 jasmine-node 不是 maintained anymore,应该可以用 jasmine 做所有事情。有任何想法吗?我们应该 运行 以不同的方式进行这些测试吗?
在 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()
是异步调用。测试必须等待它完成。我们需要将 callback 添加到 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()
});
}
也可以写成promise