জেস্টের কাছে আমার (সীমাবদ্ধ সত্ত্বেও) এক্সপোজার থেকে, আমি খুঁজে পেয়েছি যে 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)
ব্যর্থ হবে এবং পরীক্ষা ব্যর্থ হবে।