Node.js assert.deep等于2个值

Node.js assert.deepEqual 2 values

本文关键字:等于 2个值 deep assert js Node      更新时间:2024-03-24

我有一个发送两个对象的函数:

    function A(){
        var message = {
            cmd: 'one',
            msg: {
                type: 'test',
                id: 1
        }
        sendTest(message)
        message = {
             cmd: 'two',
             msg: {
                 type: 'test_a',
                 id: 2
        }
        sendTest(message)
}

我可以在单元测试中使用assert.deepEqual来测试带有两个不同对象的"消息"吗?

也许它看起来像assert.deepEqual(message, test_message1 || test_message2)

(assert.deepEqual(message, test_message1) || assert.deepEqual(message, test_message2))

Chai使用深度eql库执行深度相等检查。这展示了如何使用它来检查一个对象是否与集合中的一个对象完全相等。这里我们测试的对象是q,我们希望确保它与message1message2中的至少一个深度相等。将q更改为某个随机值,以查看测试是否失败。编写该代码是为了方便地对照更长的可能消息列表进行检查。

var assert = require("chai").assert;
var eql = require("deep-eql");
var message1 = {
    cmd: 'one',
    msg: {
        type: 'test',
        id: 1
    }
};
var message2 = {
    cmd: 'two',
    msg: {
        type: 'test_a',
        id: 2
    }
};
var q = {
    cmd: 'one',
    msg: {
        type: 'test',
        id: 1
    }
};
var found;
var candidates = [message1, message2];
for(var i = 0; !found && i < candidates.length; ++i)
    if (eql(candidates[i], q))
        found = candidates[i];
assert.isDefined(found, "did not find a match");