Jasmine在异步&中使用Q承诺风格?

时间:2014-05-03 09:46:37

标签: node.js asynchronous jasmine bdd

我在下面写了一个非常简单的异步承诺链:

"use strict";
var Q = require("q");

describe('foobar', function() {
    it('should do async add', function() {
        return Q.fcall(function () {
            return "a";
        })
        .then(function (obj) {
            return obj + "a";
        })
        .then(function (obj) {
            return obj + "a";
        })
        .then(function (obj) {
            expect(obj).toEqual("aaa");
        })
    });
});

但是当我运行“jasmine-node mytest_spec”时,我得到了:

  

完成0.004秒1次测试,1次断言,0次失败,0次跳过

我犯了什么错误?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我读了Jasmine 1.3和2.0 doc,我只是错过了一点...... Jasmine-node和protractor都使用了Jasmine 1.3,我以为它应该是2.0 ......

所以正确的工作代码应该是:

runs(function () {
    flag = false;
    return Q.fcall(function () {
        console.log("first");
        return "a";
    })
    .then(function (obj) {
        console.log("second");
        return obj + "a";
    })
    .then(function (obj) {
        console.log("third");
        return obj + "a";
    })
    .then(function (obj) {
        value = obj;
        flag = true;
    });
});

waitsFor(function() {
    return flag;
}, "The Value should be incremented", 50);

runs(function() {
    expect(value).toEqual("aaa");
});