Тестирование DOM манипуляции в тесте Жасмин - PullRequest
24 голосов
/ 06 октября 2011

Я создаю виджет js, и сначала нужно добавить JavaScript ширины скрипта, что-то вроде этого (пример из Google Analytics):

(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

Как проверить это с жасмином (с помощью светильников?)?

Ответы [ 3 ]

23 голосов
/ 22 ноября 2011

Для настройки приспособлений HTML в моих спецификациях я написал jasmine-fixture . С его помощью вы можете делать такие вещи:

var $foo, $input;
beforeEach(function(){
  $foo = affix('.foo');
    # appends to the DOM <div class="foo"></div> 
  $input = $foo.affix('input[id="name"][value="Jim"]');
    # appends <input id="name" value="Jim"/> beneath the .foo div

А после каждого, он очистится после тебя.

Для ожидания состояния DOM я использую jasmine-jquery . Он предлагает кучу совпадений, как показано ниже:

it('is named Jim', function(){
  expect($input).toHaveValue("Jim");
});
4 голосов
/ 08 октября 2011

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

function addGA(){
    var ga = document.createElement('script'); 
    ga.type = 'text/javascript'; ga.async = true;
    ga.src = 
      ('https:' == document.location.protocol ? 'https://ssl' : 'http://www')
      + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(ga, s);
};

Спецификация Jasmine:

 var href = 'http://www.google-analytics.com/ga.js';
 expect(document.getElementsByTagName('script')[0].href).not.toEqual(href);
 addGa();
 expect(document.getElementsByTagName('script')[0].href).toEqual(href);

Было бы интересно услышатьХотя лучше метод.Проверка DOM с Жасмин всегда кажется немного хакерской.

3 голосов
/ 06 октября 2011

Для тяжелых испытаний DOM с Jasmine вы можете использовать Jasmine Headless WebKit .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...