为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

RISEBY 2022-05-26 16:48:34
创建两个 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);    });});
查看完整描述

2 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

document.createElement 是“浏览器代码”,所以它不应该是我的单元测试的一部分。

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


查看完整回答
反对 回复 2022-05-26
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

在这里,您有两个不同的对象,每个对象都有自己的属性。所以 deepStrictEqual 返回 false。

nodejs.org 上的文档说:

“深度”相等意味着子对象的可枚举“自己”属性也通过以下规则递归评估。

看看https://nodejs.org/api/all.html#assert_assert_deepstrictequal_actual_expected_message


查看完整回答
反对 回复 2022-05-26
  • 2 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信