Как проверить, является ли объект JavaScript новым элементом DOM? - PullRequest
0 голосов
/ 07 мая 2018

у меня есть функция

mutationToDom: function() {
    var container = document.createElement( 'mutation' );

    container.setAttribute( 'string', 'test' );

    return container;
}

Контейнер <mutation string="test"></mutation>

Как я могу проверить это после вызова этой функции в моем модульном тесте?

QUnit.test( 'check function mutationToDom', function( assert ) {
    var container = testBlock.mutationToDom();
    assert.ok( container === ???, 'mutation is created with correct value' );
});

Попробуйте # 1

Я пытался с помощью XMLSerializer() преобразовать XML в строку

var containerString = new XMLSerializer().serializeToString(container);

но containerString равен

"<mutation xmlns="http://www.w3.org/1999/xhtml" string="test"></mutation>"

вместо "<mutation string="test"></mutation>"

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Чтобы ответить на конкретный вопрос в заголовке, попробуйте testObject instanceof Element или ...HTMLElement? Это может быть предварительным условием проверки .outerHTML, как предлагает 31piy.

0 голосов
/ 07 мая 2018

Как насчет проверки на outerHTML?

var testBlock = {
  mutationToDom: function() {
    var container = document.createElement('mutation');
    container.setAttribute('string', 'test');
    return container;
  }
};

QUnit.test( 'check function mutationToDom', function( assert ) {
    var container = testBlock.mutationToDom();
    assert.ok( container.outerHTML === '<mutation string="test"></mutation>', 'mutation is created with correct value' );
});
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.6.0.css">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="https://code.jquery.com/qunit/qunit-2.6.0.js"></script>
...