2015-05-27 57 views
0

我已經創建了使用kriskowal/q模塊的承諾,但是當我嘗試使用它時,它並沒有進入任何函數,無論是開心路徑還是錯誤路徑。JavaScript Kriskowal Q JS承諾不工作

我的承諾是創造類

var Q = require('q'); 

var Test = function() { 

}; 

Test.prototype = (function() { 
    var testt = function() { 
     var deferred = Q.defer(); 
     var x = 5; 
     if (x === 5){ 
      deferred.resolve('resolved'); 
     }else{ 
      deferred.error(new Error('error')); 
     } 
     return deferred.promise; 
    }; 
    return { 
     testt : testt 
    } 
}()); 

module.exports = Test; 

,這就是我如何去使用它

var Test = require('../src/js/test.js'); 

describe("Test", function() { 
    "use strict"; 

    var test = null; 

    beforeEach(function() { 
     test = new Test(); 
    }); 

    it("should return the promise", function() { 
     test.testt().then(
      function (a) { 
       console.log(a); 
      }, 
      function (b) { 
       console.error(b); 
      } 
     ); 
    }); 
}); 

,因爲這是一個茉莉花測試類,如果你不熟悉的茉莉花,是什麼裏面'它'功能是我如何使用承諾的邏輯。 'testt'是我創造諾言的功能。爲了進一步說明,我附上了整個代碼。

問題:它

回答

2

it立即完成,而不是之後承諾的分辨率/拒絕不打印A或B。

it("should return the promise", function (done) { 
    test.testt().then(
     function (a) { 
      console.log(a); 
      done(); 
     }, 
     function (b) { 
      console.error(b); 
      done(); 
     } 
    ); 
}); 

有關更多信息,請參見here

+2

如果拒絕承諾,調用'done.fail(b)'將測試標記爲失敗 –