2017-01-24 2 views
0

При запуске тестов только с использованием jasmine"node_modules/.bin/jasmine" "spec\test_spec.js"fs.remove не вызывается - ничего не происходит (без ошибок, ничего).Запуск fs-дополнительных функций модуля с жасмином не работает

При выполнении тестов с использованием jasmine-node"node_modules/.bin/jasmine-node" "spec\test_spec.js" функция fs правильно вызывается.

Но жасминовый узел не является maintained anymore, и это должно быть возможно сделать с помощью всего лишь жасмина. Есть идеи? Должны ли мы проводить эти тесты по-другому?

В блоке описания у нас есть 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)); 
     } 
    }); 
} 

ответ

0

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() 
    }); 
} 

Или это может быть записано как обещание.

Смежные вопросы