현재 레거시 시스템에서 일부 테스트를 작성 중이며 여기서 테스트 결과를 혼동합니다. 테스트는 예상대로 실패하지만 mocha는 결과적으로 1 passing
및 1 failing
으로 표시됩니다.약속이있는 모카 단일 테스트가 실패하고 동시에 통과합니다.
내가 Bluebird
약속, 간첩 및 스텁 sinon-chai
와 mocha
, chai-as-promised
및 sinon
을 사용하고 있습니다. 이 테스트 (내 문제를 이해하는 데 필요하지 내가 제거한 물건)입니다 :
describe("with a triggerable activity (selection)", function() {
beforeEach(function stubData() {
stubbedTriggerFunction = sinon.stub(trigger, "newParticipation");
activityLibStub = ... // stub
selectionLibStub = ... // stub
fakeActivities = ... // simple data with just ONE element
fakeSelection = ... // simple data with just ONE element
// stub methods to return synthetic data
activityLibStub.returns(new Promise(function (resolve) {
resolve(fakeActivities);
}));
selectionLibStub.withArgs(1).returns(new Promise(function (resolve) {
resolve(fakeSelection);
}));
});
afterEach(function releaseStubs() {
// restore stubs...
});
it("should call the newParticipation function", function() {
var member = memberBuilder.buildCorrect();
trigger.allActivities(member)
.then(function() {
return expect(stubbedTriggerFunction).to.not.have.been.called;
})
.done();
})
});
예상대로 기능 실제로를 호출하기 때문에이 테스트는 실패합니다. 그러나 모카는 한 테스트가 통과되었고 한 테스트가 실패했다고합니다. 이 모듈에서 구현 한 유일한 테스트입니다.
나는 이것이 약속과 관련이 있다고 확신하지만 그것이 무엇인지 알아 내지 못하는 것 같습니다. 또한 추가 할 경우 모 블록은 테스트를 통과 한 후에도 여전히 블록을 추가 한 후에
.catch(function(){
chai.assert.fail();
})
을 추가합니다. 이 메서드는 한 번 호출되고 나는 함께 작업 할 하나의 합성 데이터 집합 만 갖습니다. 그래서 저는 그것이 모카에게 이것이 실패한 동안 성공했다는 것을 알려주는 것이지요 ...
아이디어가 있습니까?
감사합니다, Vegaaaa
오, 알겠습니다. 나는 결코 약속을 되찾고'done()'을 제거하려하지 않았습니다. 그냥 둘 중 하나를 시도해 보았지만 둘 다 결코 시도하지 않았습니다 ... 여전히 Q와 함께 작업하는 데 익숙합니다. Bluebird는 저에게 새로운 것입니다. 이것으로 작동합니다! 고마워요! – Vegaaaa