Почему два html элемента с разными атрибутами deepStrictEqual - PullRequest
2 голосов
/ 22 марта 2020

Создание двух 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 ]

0 голосов
/ 26 марта 2020

document.createElement - это «код браузера», поэтому он не должен быть частью моего модульного тестирования.

Я не уверен, должно ли assert.deepStrictEqual возвращать false при сравнении неидентичных объектов, созданных документом. createElement (), но это плохой юнит-тест, если вы не тестируете сам document.createElement (а не свои logi c).

смотрите оба ответа здесь: Javascript Юнит-тестирование - DOM Manipulation

0 голосов
/ 22 марта 2020

Здесь у вас есть два разных объекта со своими свойствами. Поэтому deepStrictEqual возвращает false.

do c в nodejs .org говорит:

«Глубокое» равенство означает, что перечисляемые «собственные» свойства дочерних объектов рекурсивно оценивается также по следующим правилам.

Посмотрите на https://nodejs.org/api/all.html#assert_assert_deepstrictequal_actual_expected_message

...