gpt4 book ai didi

javascript - 使用 Jasmine 测试在其返回值中包含当前时间的函数

转载 作者:行者123 更新时间:2023-11-29 22:49:54 31 4
gpt4 key购买 nike

我正在测试一个返回对象的函数。其中一个键的值是以毫秒为单位的当前时间。我们如何使用 jasmine 对其进行测试?

var fun = function(name,id){
var obj = {
name : name,
id : id,
createdTime : Date.now()
}
return obj;
}

expect(fun("abc",1)).toBe({name:"abc",id:1,createdTime:Date.now()})

Date.now() 返回 2 个不同的值,因为主函数和测试用例都在不同的时间运行。

最佳答案

根据您需要的具体程度,您可以使用 Jasmine Matchers 包中的 toBeWithinRange 创建一个 +-1 秒或类似数字的范围:

expect(createdTime).toBeWithinRange(Date.now() - 1000, Date.now() + 1000)

使用这种方法,您必须将 createdTime 与其他测试分开测试,但这应该不是什么大问题。您只需将所需的返回属性分配给变量 createdTime

编辑- 一种具有更清晰匹配器的类似方法是使用 toBeNear:

expect(createdTime).toBeNear(Date.now(), 2);

如果分配给 createdTime 的日期在测试运行日期的两秒内,则为真。

编辑 2 - 要在测试时排除对象键,您可以按照示例 here 进行操作。在你的情况下你会这样做:

var joc = jasmine.objectContaining;
expect(fun("abc",1))
.toEqual(joc({
name:"abc",
id:1
}));

关于javascript - 使用 Jasmine 测试在其返回值中包含当前时间的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57673958/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com