Как установить тег ‹body› как фикстуру в Jasmine

В настоящее время я пытаюсь протестировать функцию JS с помощью Jasmine. Поскольку функция проверяет классы CSS, установленные в теге body, я хочу использовать тег <body> в фикстуре:

setFixtures('<body class="themed someotherclass"></body>')

Ссылка jQuery на этот заглушенный HTML — $('body') — затем передается функции JS, которую я тестирую. Но этот тег body, очевидно, никогда не появляется внутри теста Jasmine — похоже, что Jasmine создает свой собственный документ с телом и внутри него помещает все фикстуры внутри div — по крайней мере, когда я повторяю outerHTML заглушенного элемента тела I. посмотрите это внутри тела и после встроенного JS, связанного с Jasmine:

<div id="jasmine-fixtures"></div>

который пуст, когда я пытаюсь заглушить тело, но заполняется, когда вместо этого я использую div.

Есть ли способ заглушить тег body в тесте Jasmine?


person RSeidelsohn    schedule 27.08.2012    source источник


Ответы (1)


Хорошо, я наконец нашел решение.

Всякий раз, когда вы хотите заглушить тег тела с помощью Жасмин, вам сначала нужно вызвать «setFixtures ()» - во время этого вызова Жасмин создает свой собственный тег тела. Таким образом, после создания тега body вы можете манипулировать им, например. используя jQuery, а затем запустите свой тест, который зависит от изменений, внесенных вами в тег body.

То есть: я запускаю свою обычную команду "setFixtures(SOME HTML)", если это необходимо, или - в случае, если мне нужен только тег body для моего теста, я просто вызываю "setFixtures()" в начале моего теста без каких-либо аргументов. После этого, по крайней мере, в Jasmine версии 1.x тег будет доступен, и я могу использовать, например, jQuery для настройки/изменения тега body, как мне нужно: $('body').addClass('themed'); Поэтому вместо того, чтобы издеваться над тегом body как надстройкой, я «создаю» тег body, вызывая «setFixtures()» без каких-либо аргументов, а затем манипулирую DOM по мере необходимости.

person RSeidelsohn    schedule 27.08.2012