সুতরাং, আমি এমন একটি উপাদান যা টেস্ট করছি যা ইভেন্ট-ইমিটারের উপর নির্ভর করে। এটি করতে আমি মোচা + চই সহ প্রতিশ্রুতি ব্যবহার করে একটি সমাধান নিয়ে এসেছি:
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();
});
});
কনসোলে আমি একটি 'আনহানডেল্ডপ্রিমাইজেকশন ওয়ার্নিং' পাচ্ছি যদিও প্রত্যাখ্যান করা ফাংশনটি কল করা হচ্ছে কারণ এটি তাত্ক্ষণিকভাবে 'অ্যাসেরেশন এরিয়ার: প্রতিশ্রুতি ত্রুটি' বার্তাটি দেখায়
(নোড: 25754) আনহানডেল্ডপ্রাইম রিজেকশনস সতর্কতা: আনহানডেলড প্রতিশ্রুতি প্রত্যাখ্যান (প্রত্যাখ্যান ID: 2): দৃser়তা ত্রুটি: প্রতিশ্রুতি ত্রুটি: প্রত্যাশিত {অবজেক্ট (বার্তা, শোডিফ, ...) - মিথ্যা হতে হবে 1) সঠিক ইভেন্টের সাথে স্থানান্তরিত হওয়া উচিত
এবং তারপরে, 2 সেকেন্ডের পরে আমি পাই
ত্রুটি: 2000 মাইলের সময়সীমা অতিক্রম করেছে। নিশ্চিত হয়ে নিন যে সম্পন্ন () কলব্যাক এই পরীক্ষায় কল করা হচ্ছে।
যা ধরা কলব্যাক কার্যকর হওয়ার পর থেকে এটি আরও অদ্ভুত।
এখন মজার বিষয়, আমি যদি মন্তব্যটি করে মন্তব্য করি assert.isNotOk(error...)
তবে কনসোলে কোনও সতর্কতা রয়েছে with এটি ক্যাচটি কার্যকর করে এই অর্থে স্থির করে 'ব্যর্থ'।
কিন্তু তবুও, আমি প্রতিশ্রুতি দিয়ে এই ত্রুটিগুলি বুঝতে পারি না। কেউ কি আমাকে আলোকিত করতে পারে?