gpt4 book ai didi

javascript - 如何在对象的 nodeunit deepEqual 测试中跳过纪元字段?

转载 作者:行者123 更新时间:2023-11-30 05:34:40 24 4
gpt4 key购买 nike

我正在使用 nodeunit 对一些 Javascript 对象运行测试。在某些时候,我有这样的验证:

test.deepEqual(originalObject, testObject, 'Sentiment validation');

我正在验证的对象大致如下所示:

var originalObject = {
"sentiments": [
{
"sentiment": "negative",
"user": {
"_id": null,
"type": "machine"
},
"timestamp": 1404775102
}
]
};

var testObject = {
"sentiments": [
{
"sentiment": "negative",
"user": {
"_id": null,
"type": "machine"
},
"timestamp": 1405004493
}
]
};

我的测试总是失败,因为动态创建的对象(在本例中为 testObject)中的 timestamp 字段总是不同的;有没有办法告诉 deepEqual 方法跳过那个字段?

最佳答案

你可以试试这个。

我没有对原始的两个对象调用断言,但我调用了一个修改原始对象的函数并对修改后的两个对象进行断言。

删除时间戳的函数

var getObjectWithoutTimestamp = function(obj){
var result = {};
//map is because if there are more than one sentiment in array.
result["sentiments"] = obj.sentiments.map(function(sentiment){
var sntmnt = {};
var user = {"_id":sentiment.user._id,"type":sentiment.user.type};
sntmnt["sentiment"] = sentiment.sentiment;
sntmnt["user"] = user;
return sntmnt;
});
return result;
};

将修改原始对象并调用断言的函数。

var assertObjects = function (expected,actual) {
//// get object excluding timestamp
var expectedModified = getObjectWithoutTimestamp(expected);
var actualModified = getObjectWithoutTimestamp(actual);
// assert on these two objects. I tried with nodejs assert.
require('assert').deepEqual(expectedModified,actualModified);
}

对原始对象调用 assertObject 函数。

assertObjects(testObject,originalObject);

可能有更好的方法来做到这一点。因此,我们将不胜感激任何改进/帮助。

关于javascript - 如何在对象的 nodeunit deepEqual 测试中跳过纪元字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24680069/

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