इसलिए, मैं एक घटक का परीक्षण कर रहा हूं जो एक घटना-एमिटर पर निर्भर करता है। ऐसा करने के लिए मैं मोचा + चाय के साथ वादों का उपयोग कर एक समाधान के साथ आया:
it('should transition with the correct event', (done) => {
const cFSM = new CharacterFSM({}, emitter, transitions);
let timeout = null;
let resolved = false;
new Promise((resolve, reject) => {
emitter.once('action', resolve);
emitter.emit('done', {});
timeout = setTimeout(() => {
if (!resolved) {
reject('Timedout!');
}
clearTimeout(timeout);
}, 100);
}).then((state) => {
resolved = true;
assert(state.action === 'DONE', 'should change state');
done();
}).catch((error) => {
assert.isNotOk(error,'Promise error');
done();
});
});
कंसोल पर मुझे 'UnhandledPromiseRejectionWarning' मिल रहा है, भले ही अस्वीकार फ़ंक्शन को कॉल किया जा रहा हो, क्योंकि यह तुरंत संदेश 'AssertionError: Promise error' दिखाता है
:
और फिर, 2 सेकंड के बाद मुझे मिलता है
त्रुटि: 2000 मी से अधिक का समय समाप्त। सुनिश्चित करें कि इस परीक्षण में कॉलबैक किया जा रहा है।
कैच कॉलबैक निष्पादित होने के बाद से यह भी अजीब है। (मुझे लगता है कि किसी कारण से एस्टर विफलता ने बाकी निष्पादन को रोक दिया)
अब मजेदार बात है, अगर मैं टिप्पणी करता हूं assert.isNotOk(error...)
कि परीक्षण कंसोल में किसी भी चेतावनी के साथ ठीक चलता है। यह इस अर्थ में 'विफल' है कि यह कैच को अंजाम देता है।
लेकिन फिर भी, मैं इन त्रुटियों को वादे के साथ नहीं समझ सकता। क्या कोई मुझे बता सकता है?