玩笑-在一次测试中恢复原始矩函数

问题描述 投票:1回答:1

如何在一项测试中还原或实现模拟?我有一个功能:

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);
});

我必须涵盖两个测试用例。

  1. [如果FreeFrom不是空字符串,则将值转换为矩。然后格式化为我的格式。
  2. 当FreeFrom为空字符串时,请使用当前日期和时刻。然后格式化为我的格式。
  3. 如果2。

,我想模拟当前日期以使测试独立于系统日期。

如何在一项测试中还原或实现模拟?我有一个函数:const parser =(data)=> {const now = moment()。format('DD-MM-YYYY'); //更多实现const parsedDate = ...

jestjs momentjs
1个回答
1
投票

如注释check related question中的建议

© www.soinside.com 2019 - 2024. All rights reserved.