জেস্টের কাছে আমার (সীমাবদ্ধ সত্ত্বেও) এক্সপোজার থেকে, আমি খুঁজে পেয়েছি যে expect().toThrow()উপযুক্ত যদি আপনি কেবল পরীক্ষা করতে চান তবে একটি নির্দিষ্ট ধরণের একটি ত্রুটি নিক্ষেপ করা হয়:
expect(() => functionUnderTest()).toThrow(TypeError);
অথবা একটি নির্দিষ্ট বার্তা দিয়ে একটি ত্রুটি নিক্ষেপ করা হয়েছে:
expect(() => functionUnderTest()).toThrow('Something bad happened!');
যদি আপনি উভয়ই করার চেষ্টা করেন তবে আপনি একটি মিথ্যা ইতিবাচক পাবেন। উদাহরণস্বরূপ, যদি আপনার কোড ছুড়ে দেয় RangeError('Something bad happened!'), এই পরীক্ষাটি পাস করবে:
expect(() => functionUnderTest()).toThrow(new TypeError('Something bad happened!'));
বোডলসগের উত্তর যা চেষ্টা / ক্যাচ ব্যবহারের পরামর্শ দেয় তা নিকটবর্তী, তবে প্রত্যাশার জোরে ধরা পড়েছে তা নিশ্চিত করতে সত্য বলে মিথ্যা প্রত্যাশার চেয়ে আপনি তার পরিবর্তে expect.assertions(2)আপনার পরীক্ষার শুরুতে ব্যবহার করতে পারেন যেখানে 2প্রত্যাশিত দৃser়সংখ্যার সংখ্যা । আমি এটিকে আরও নিখুঁতভাবে পরীক্ষার অভিপ্রায় বর্ণনা করে অনুভব করি।
ত্রুটির ধরণ এবং বার্তা পরীক্ষা করার সম্পূর্ণ উদাহরণ:
describe('functionUnderTest', () => {
it('should throw a specific type of error.', () => {
expect.assertions(2);
try {
functionUnderTest();
} catch (error) {
expect(error).toBeInstanceOf(TypeError);
expect(error).toHaveProperty('message', 'Something bad happened!');
}
});
});
যদি functionUnderTest()কোনও ত্রুটি না ফেলে তবে দৃ .়ভাবে আঘাত হানা যাবে তবে expect.assertions(2)ব্যর্থ হবে এবং পরীক্ষা ব্যর্থ হবে।