Javascript Kriskowal Q JS承诺不起作用

Javascript Kriskowal Q JS承诺不起作用,javascript,jasmine,q,Javascript,Jasmine,Q,我使用kriskowal/q模块创建了一个承诺,但当我尝试使用它时,它不会进入任何函数,无论是愉快路径还是错误路径 这是我的承诺创造课 var Q = require('q'); var Test = function () { }; Test.prototype = (function () { var testt = function () { var deferred = Q.defer(); var x = 5; if (x

我使用kriskowal/q模块创建了一个承诺,但当我尝试使用它时,它不会进入任何函数,无论是愉快路径还是错误路径

这是我的承诺创造课

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);
            }
        );
    });
});
由于这是一个jasmine测试类,如果您不熟悉jasmine,“it”函数中的内容就是我使用promise的逻辑。“testt”是我创建承诺的函数。为了进一步澄清,我附上了完整的代码


问题:它既不打印a也不打印b

您的
它将立即完成,而不是在承诺解决/拒绝后完成

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

有关更多信息,请参阅。

如果拒绝承诺呼叫,则更好。
完成。失败(b)
将测试标记为失败