2016-05-31 3 views
0

У меня есть яваскрипт обещание, похожее на это:Как проверить цепочку обещаний 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

Это выглядит как анти-паттерна, вы, вероятно, хотите, чтобы записать его как 'функции а() {return b(). then (...)} ', так как' b' возвращает обещание, а вместо 'resolve' вы' return'. – elclanrs

ответ

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' }); 
    }); 
}; 
Смежные вопросы