2017-02-22 50 views
0

Если я прокомментирую строку return Promise.reject(err); в моей функции findGood, тестовый пример должен завершиться неудачно. Это означает, что, если я не вернусь от своей функции, блок catch в тесте должен быть undefined.Handle Promise case отменить Mocha

var findGood = function (name) { 

    return goodModel.findByName(name) 
     .then((result) => { 

      .... 
      return result; 


     }) 
     .catch((err) => {   
      return Promise.reject(err); 
     }); 
}; 

Вот тест

it('good not found', function() { 

    var goodModelStub = sinon.stub(goodModel, 'findByName'); 

    var error = 'Good not found'; 

    goodModelStub.returns(Promise.reject(error)); 

    return goodFinder.findGood('Sony') 
    .catch(function (err) { 
     assert.equal(err, error); 
    }); 

});

+0

'.catch ((err) => Promise.reject (err))' довольно бесполезный оператор, так как вы получите то же самое, если бы просто удалили его. – Frxstrem

+0

@Frxstrem, что я должен делать? вы можете ответить, если знаете? –

+0

вы должны назвать обещание, как реальное, а не напрямую, чтобы поймать http://stackoverflow.com/questions/26571328/how-do-i-properly-test-promises-with-mocha-and-chai –

ответ

0

Во-первых, нет никакой необходимости, чтобы поймать ошибку, а затем бросить его снова, обрабатывать отказ в надлежащем месте (ваш тест в данном случае)

findGood возвращает Promise так почему бы не использовать chai-as-promised

it('good not found', function() { 
    var goodModelStub = sinon.stub(goodModel, 'findByName'); 

    var error = 'Good not found'; 

    goodModelStub.returns(Promise.reject(error)); 

    return goodFinder.findGood('Sony').should.be.rejected 
    }); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^