2017-01-24 2 views
0

jasmine"node_modules/.bin/jasmine" "spec\test_spec.js"을 사용하여 테스트를 실행하면 fs.remove이 호출되지 않습니다. 오류가 발생하지 않고 아무 것도 발생하지 않습니다.fas-extra 모듈 기능이 jasmine과 함께 작동하지 않습니다.

재스민 노드"node_modules/.bin/jasmine-node" "spec\test_spec.js"을 사용하여 테스트를 실행하는 경우 fs 기능이 올바르게 호출됩니다.

그러나 jasmine-node는 maintained anymore이 아니며 단지 재스민으로 모든 것을 할 수 있어야합니다. 어떤 아이디어? 이 테스트를 다르게 실행해야합니까?

설명 블록에는 올바르게 작동하는 afterEach가 있습니다. fs.remove가 호출되지

afterEach(function() { 
    sfnc.deleteProjectFolders(projectName); 
}); 

은/아무것도

... 
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()는 비동기 호출을 발생하지 않습니다. 테스트가 끝날 때까지 기다려야합니다. afterEach 함수에 callback을 추가해야합니다. 간단한 콜백

솔루션은 :

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

아니면이 약속으로 기록 될 수있다.