动态快照测试

时间:2019-08-28 08:53:20

标签: javascript reactjs testing snapshot

我有一个时差功能,它获取一个日期,并计算与当前时间和返回时间的差,例如:

4 days ago

现在,我在带有一些单元测试和快照测试的网页上使用了此功能。 快照测试每天都会失败,因为明天的差异将是5 days ago

在这种情况下我该怎么办?

更新:输入我的伪代码

const timeDiff = gTime => {
    return (currentTime - gtime) 
};

此功能将在我的网页,组件,评论部分和...中调用 因此我所有组件的快照测试都将失败。

3 个答案:

答案 0 :(得分:1)

您可能有2个选择:

1-考虑是否有空输入(或类似的东西),在这种情况下,组件将返回什么,因此通过更改函数,可以为函数提供空输入并期望获得预期的结果。 / p>

const timeDiff = gTime => {
    if(!gTime) return "";
    return (currentTime - gtime)  };   

// ------------test---------------

timeDiff(null)

2-提供一个将返回预期结果的输入,例如,在您的方案中,您可以将当前时间作为输入(作为模拟数据),这样每次您得到的结果都会有0秒的差异。

const timeDiff = gTime => {
    return (currentTime - gtime) 
};

// ------------test---------------

mockData = getCurrentTime()
timeDiff(mockData)

答案 1 :(得分:0)

答案 2 :(得分:0)

我完全找到了答案。 我使用第三方库进行时间操作。我在我的react组件内部使用了这个库(考虑在js文件中导入)。

所以我无法模拟该库的数据。

最终,我决定从文件中删除该第三库的导入,并将一个函数(在react.js中称为props)传递给我的组件。

现在,我可以轻松地将模拟数据传递到此组件,并且解决了我的问题。