如何测试javascript的承诺链?

时间:2016-05-31 12:07:23

标签: javascript

我有一个类似于此的javascript承诺:

function a(){
return new Promise(function(resolve, reject){
    b().then(function(result){
        if(result.name == 'sampletest1'){
            resolve({
                'data': 'testdata1'
            });
        }else if(result.name=='sampletest2'){
            resolve({
                'data': 'testdata2'
            });
        }
    }, reject);
})
}

我想在jasmine中编写测试来测试函数a的功能。但是我遇到了麻烦,因为这个函数依赖于函数b的结果,这也是一个承诺。那么,如何模拟函数b,以便我能够测试函数a的功能。

1 个答案:

答案 0 :(得分:0)

不要退还额外的承诺:

function a() {

  return b().then(function(result) {
    if (result.name == 'sampletest1') {
      return {
        'data': 'testdata1'
      };
    } else if (result.name == 'sampletest2') {
      return {
        'data': 'testdata2'
      };
    }
  });

}

模拟b就像这样简单:

b = function () {
    return new Promise(function (resolve) {
        resolve({ name: 'sampletest1' });
    });
};
相关问题