Как восстановить или реализовать mock за один тест? У меня есть функция:
const parser = (data)=>{
const now = moment().format('DD-MM-YYYY');
//more implementation
const parsedDate = moment(dateFromData).format('DD-MM-YYYY')
return {
date: isDateFromDataExists ? now : parsedDate
}
}
А теперь я хочу протестировать свою функцию. Когда isDateFromDataExists
истинно, я хотел бы вернуть текущий год (который следует высмеивать), но когда isDateFromDataExists
ложно, я хотел бы вернуть parsedDate
. Когда я издевался глобально
jest.mock('moment', () => () => ({format: () => '01-01-2020'}));
Я не могу «разблокировать» в одном тесте.
Как я могу сделать это с помощью Jest?
=== = EDIT ====
Это мой код.
const myParser = (single) => {
const obj = {};
const now = moment().format("DD-MM-YYYY");
obj.availableFrom = get(single, 'FreeFrom', '') !== '' ? moment(get(single, 'FreeFrom'), 'YYYY-MM-DD').format("DD-MM-YYYY") : now;
return obj;
}
Это мои тесты
test('Return correct json when FreeFrom is empty', async () => {
const xmlData = fs.readFileSync(path.join(__dirname, './testData/1.xml'), 'utf8');
var jsonObj = parser.parse(xmlData, options, true);
const result = require('./testData/1.json');
expect(myParser(jsonObj)).toEqual(result);
});
test('Return correct json when FreeFrom is available', async () => {
const xmlData = fs.readFileSync(path.join(__dirname, './testData/2.xml'), 'utf8');
var jsonObj = parser.parse(xmlData, options, true);
const result = require('./testData/2.json');
expect(myParser(jsonObj)).toEqual(result);
});
Мне нужно покрыть два тестовых примера.
- Когда FreeFrom не является пустой строкой, конвертируйте значение с моментом. Затем отформатируйте в мой формат.
- Когда FreeFrom является пустой строкой, используйте текущую дату с моментом. Затем отформатируйте в мой формат.
В случае 2. Я хотел бы имитировать текущую дату, чтобы сделать тесты независимыми от системной даты.