Второй тест в файле получает цену, закэшированную в первом
// pricing.js
const cache = new Map();
module.exports.getPrice = async (sku) => {
if (!cache.has(sku)) cache.set(sku, await api.fetchPrice(sku));
return cache.get(sku);
};
Первый тест мокает api.fetchPrice так, чтобы вернуть 100, второй — 200 для того же SKU. Второй тест получает 100. Почему и что сделать?
- Кэш живёт на уровне модуля; сбрасывать его между тестами
- Jest кэширует результаты моков между тестами
- Второй мок не применился, так как имя совпадает
- Map нельзя использовать в модулях, которые мокаются
