如何在一项测试中还原或实现模拟?我有一个功能:
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
为true时,我想返回当前年份(应该模拟),但是当isDateFromDataExists
为false时,我想返回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); });
我必须涵盖两个测试用例。
如果2。
如何在一项测试中还原或实现模拟?我有一个函数:const parser =(data)=> {const now = moment()。format('DD-MM-YYYY'); //更多实现const parsedDate = ...
如注释check related question中的建议