创建两个 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 本身(而不是您的逻辑)。
慕哥9229398
TA贡献1877条经验 获得超6个赞
在这里,您有两个不同的对象,每个对象都有自己的属性。所以 deepStrictEqual 返回 false。
nodejs.org 上的文档说:
“深度”相等意味着子对象的可枚举“自己”属性也通过以下规则递归评估。
看看https://nodejs.org/api/all.html#assert_assert_deepstrictequal_actual_expected_message
添加回答
举报
0/150
提交
取消