2016-05-31 57 views
0

我有一個類似的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); 
}) 
} 

我想要寫在茉莉花測試,測試的功能a功能。但是我遇到了麻煩,因爲這個功能取決於功能b的結果,這也是一個承諾。那麼,如何模擬功能b,這樣我就能夠測試功能a的功能。

+2

這看起來像一個反模式,你可能希望把它寫爲'功能:

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

爲懲戒b將簡單(){return b()。then(...)}'因爲'b'返回一個promise,而不是'resolve'你'return'。 – elclanrs

回答

0

不要返回一個額外承諾:

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