I managed to fix it, I just invoked the original functions inside the test, then mocked genSalt
and hash
with the results.
const genSaltOriginal = (await vi.importActual<any>("bcryptjs")).genSalt;
const hashOriginal = (await vi.importActual<any>("bcryptjs")).hash;
const salt = await genSaltOriginal(10);
const hashedPassword = await hashOriginal(password, salt);
(genSalt as Mock).mockResolvedValueOnce(salt);
(hash as Mock).mockResolvedValueOnce(hashedPassword);