2013-07-18 4 views
1

Я пишу тестовый пример, чтобы отслеживать вызовы отслеживания Google на событие click. В коде есть два сценария. Один, перейдите все гиперссылки на странице и вызовите метод click внутри цикла for. Во-вторых, напишите независимые тестовые примеры для отдельных элементов.Тестирование связей привязки с помощью Mocha & Sinon

describe("Container Tags Automated Test Suite", function() { 

    var spy; 
    var assert = sinon.assert; 

    beforeEach(function() { 
     spy = sinon.spy(window.spyConfig.object, window.spyConfig.method); 
    }); 

    afterEach(function() { 
     spy.restore(); 
    }); 

    // Trackable links & total links count 
    var links = $("a.wrapper-link"), 
     linksCount = links.length; 

    //FIRST APPRAOCH : MAKE ARRAY OF LINKS 
    for(var i=0; i < linksCount ; i++) { 
     it ("Track All page links", function() { 
      link = $(links[i]); 
      link.click(); 
      assert.called(spy); 
     }); 
    } 

    //SECOND APPROACH : Invidual Selectors 
    it ("Track single link", function() { 
     link = $('a.wrapper-link'); 
     link.click(); 
     assert.called(spy); 
    }); 

}); 

Проблема: Все работает нормально, если мы используем независимые Jquery селекторы для каждого теста. Напр. тестовый случай «Track Single Link» получил PASS при каждом исполнении.

Но, с первым подходом к созданию массива по ссылкам, а затем привязать событие клика к элементам, заставляющим тестовый случай FAIL. Попытка успеть с последних двух часов, но не получилось найти причину этой проблемы. Пожалуйста помоги.

ответ

1

Это обычная ошибка для циклов, где в конце i === linksCount при запуске теста. Вы должны перевести вызов на тест в функцию и передать i в него, чтобы сохранить его в рамках функции.

//FIRST APPRAOCH : MAKE ARRAY OF LINKS 

for(var i=0; i < linksCount ; i++) { 
    (function(cnt){ 
     it ("Track page the " + cnt + ". link", function() { 
     link = $(links[cnt]); 
     link.click(); 
     assert.called(spy); 
     }); 
    })(i) 
} 
+1

спасибо большое, человек спас меня. Если вы не возражаете, поделитесь некоторыми полезными ссылками блога, чтобы узнать больше об этом для проблемы с циклами. Еще раз спасибо. –

Смежные вопросы