Я новичок в издевательствах в Узле.Я использую библиотеку Rewire, которая кажется одним из лучших вариантов.Я столкнулся с проблемой, когда мне нужно дважды смоделировать одну и ту же функцию в методе, чтобы они возвращали разные результаты:
const tourId: string = await redis.read(accessToken, false);
if (tourId === null) {
logger.warn('invalid token', { accessToken });
throw boom.notFound(codes.RECORD_NOT_FOUND);
}
logger.warn('found an access token', { tourId });
const tourResponse: string = await redis.read(tourId, false);
if (tourResponse === null) {
logger.warn('tour not found', { accessToken, tourId });
throw boom.notFound(codes.RECORD_NOT_FOUND);
}
В приведенном выше примере я дважды вызываю функцию redis.read()
.Для того, чтобы правильно получить тестовое покрытие, которое я хочу, мне нужно по-разному высмеивать эти два вызова, с которыми я борюсь.Вот тестовый пример, который у меня есть:
it('returns a 404 error if access token not found in redis', async () => {
service.__set__({
redis: {
read: (accessToken: string): string | null => null,
},
});
service.getHandler('12345').catch((result: boom) => {
expect(result.isBoom, 'should be boom error').to.be.true;
expect(result.output.payload.statusCode, 'should be 404 error').to.equal(404);
expect(result.output.payload.message, 'should be RECORD_NOT_FOUND error').to.equal(codes.RECORD_NOT_FOUND);
});
});
Любые советы приветствуются!