Тест QUnit не пройден: сообщение о результате не выдано - PullRequest
1 голос
/ 15 июля 2011

Попытка освоить QUnit, запустив inte некоторые проблемы: Когда я запускаю следующий тест:

   test("Trying QUnit", function() {
            expect(1);
            var div = $('<div>')
            div.addClass('field-box');
            same(fieldBox(), div, 'Expected ' + div + ' was: ' + fieldBox());
        });
    });

    function fieldBox() {
        return $('<div class="field-box">');
    }

Я получаю сообщение:

Expected [object Object] was: [object Object]
Expected:   
[
  <div class="field-box"></div>
]

Что не дает мне никакого намека на то, что не так. Если я изменю метод fieldBox, чтобы вместо него возвращать div с классом «field-boxing», я получу следующее более объяснительное сообщение:

 Expected [object Object] was: [object Object]
Expected:   
[
  <div class="field-box"></div>
]
Result: 
[
  <div class="field-boxing"></div>
]
Diff:   
 [
   <div class="field-box"></div>
class="field-boxing"></div>
 ] 

Что наводит меня на мысль, что на самом деле в моем первоначальном тесте не было ничего плохого, поскольку Diff не отображался. И все же это не удалось, почему?

Ответы [ 2 ]

0 голосов
/ 15 августа 2011

DOM-объекты сравниваются по их идентичности, а не по содержимому, даже при использовании одного и того же (который теперь является deepEquals, то же самое устарело).для актуального содержания.

0 голосов
/ 15 июля 2011

Этот тест проходит -

test("Trying QUnit", function() {
    expect(1);
    var div = $('<div>')
    div.addClass('field-box');
    same(fieldBox().html(), div.html(), 'Expected ' + div + ' was: ' + fieldBox());
});

Может ли быть так, что qunit сравнивает два объекта JavaScript, и хотя то, что содержится в объектах, одинаково, объекты не одинаковы (то есть они не указывают на один и тот же объект в памяти), поэтому тест не пройден .

EDIT

Я вычеркнул граф объектов для двух объектов, используя код ниже -

for (property in div[0]) {
    output += property + ': ' + div[0][property]+'; ';
}

свойство parentNode для div 'var div' равно -

parentNode: null;

и для функции div 'fieldBox ()' это -

parentNode: [object DocumentFragment];

Я предполагаю, что это различие произошло из-за разного способа создания объектов. Затем Qunit обнаружит эту разницу, поскольку он перебирает свойства каждого объекта и, соответственно, не проходит тест.

...