为什么两个属性不同的html元素是deepStrictEqual

创建两个 html div 元素,给一个 class="foo" 的属性。


DeepStrictEqual 断言它们是相等的。


为什么?


const jsdom = require("jsdom");

const {JSDOM} = jsdom;

var assert = require('assert');

global.document = new JSDOM(`<!DOCTYPE html>`).window.document;


describe.only('add_attributes to elem', function () {


    it('test - same element different attributes', function () {

    let testhtml = document.createElement('div');

    testhtml.setAttribute('class', 'foo');

    let testhtml2 = document.createElement('div');

    //WHY ARE TWO DIFFERENT HTML ELEMENTS DEEP STRICT EQUAL.

    assert.deepStrictEqual(testhtml, testhtml2);


    });

    it('test2 - different elements', function () {

    let testhtml = document.createElement('div');

    let testhtml2 = document.createElement('span');

    //WHY ARE TWO DIFFERENT HTML ELEMENTS DEEP STRICT EQUAL.

    assert.deepStrictEqual(testhtml, testhtml2);


    });

});


RISEBY
浏览 102回答 2
2回答

紫衣仙女

document.createElement 是“浏览器代码”,所以它不应该是我的单元测试的一部分。我不确定 assert.deepStrictEqual 在比较 document.createElement() 创建的不同对象时是否应该返回 false 但这是一个不好的单元测试,除非您正在测试 document.createElement 本身(而不是您的逻辑)。

慕哥9229398

在这里,您有两个不同的对象,每个对象都有自己的属性。所以 deepStrictEqual 返回 false。nodejs.org 上的文档说:“深度”相等意味着子对象的可枚举“自己”属性也通过以下规则递归评估。看看https://nodejs.org/api/all.html#assert_assert_deepstrictequal_actual_expected_message
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript