2017-02-22 3 views
0

findGood 함수에 return Promise.reject(err); 줄의 주석을 달면 테스트 케이스가 실패합니다. 내 기능에서 돌아 오지 않는다면, 테스트에서 블록은 undefined이어야합니다. 여기 처리 약속 거부 사례 모카

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는 왜 사용하지 않을 약속을 반환, 다시 던져 적절한 장소에 거절을 처리 할 필요가 없습니다 먼저 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 
    }); 
});