Gösterdiğin testlerde orayı test etmiyorsun. Tahmin ediyorum dolaylı diyerek ikinci testi kastediyorsun ama küçük bir hata var.
mockUserModel.findByIdAndUpdate.mockReturnValue({
lean: jest.fn().mockRejectedValue(new NotFoundException()),
});
Burada lean() satırının sonucu NotFoundException
olsun demişsin.
.findByIdAndUpdate (id, data, { new: true })
.lean() <-- Hata burada oluşacak
.then((data) =› {
Oysa senin kırmızı ile gösterdiğin yeri test etmen için hatanın then((data) satırında oluşması lazım.
İkinci testi şu şekilde değiştirirsen kırmızı ile gösterdiğin yer test edilir:
it('should throw NotFoundException if document does not exist', async () => {
mockUserModel.findByIdAndUpdate.mockReturnValue({
lean: jest.fn().mockResolvedValue(null), // Hata yerine bos deger dondur
});
// async fonksiyon oldugu icin sonucu bekle
await expect(
userService.UpdateUser(mockUserId, mockUserUpdateDto)
).rejects.toThrowError(NotFoundException);
expect(mockUserModel.findByIdAndUpdate).toHaveBeenCalledWith(
mockUserId,
mockUserUpdateDto,
{ new: true },
);
});
Bu şekilde yaptığında hata artık istediğin satırda oluşacak
.findByIdAndUpdate (id, data, { new: true })
.lean ()
.then((data) =› { // data null olacak
if (data == null) { // Hata bu if'in icinde olusacak
throw new NotFoundException () ;
}