Тестирование Жасмин: прослушивание изменений DOM
У меня есть установка requireJS, где у меня есть модуль 'imageGallery', который прослушивает и обрабатывает события нажатия на элементах '.gallery'. Это, в свою очередь, использует плагин "magnificPopup", чтобы открыть галерею изображений, основанную на элементе, по которому щелкнули.
Я хочу проверить это с помощью Жасмин; то есть я хочу проверить, что вызывается событие click и что в домене есть html для magnificPopup - доказательство того, что событие click прошло успешно.
В моем текущем тесте кликов используется "waitsFor", но это всегда не удается. Любые идеи о том, как я могу достичь этого?
Модуль галереи изображений
define(
['jquery', 'magnificPopup'],
function($, magnificPopup) {
return {
init: function() {
$('body').on('click', '.gallery', function(e) {
e.preventDefault();
//code to generate items...
$.magnificPopup.open({
items: items,
gallery: { enabled: true }
});
});
}
}
})
Галерея изображений Жасмин Тест
define(['imageGallery'],
function(imageGallery) {
jasmine.getFixtures().fixturesPath = '/';
describe('Image Galleries', function() {
beforeEach(function(){
loadFixtures('/path-to-my-fixture');
spyOn(imageGallery, 'init');
imageGallery.init();
});
it('Should be defined', function() {
expect(imageGallery).not.toBe(null);
});
it('Should be initialised via imageGallery.init()', function() {
expect(imageGallery.init).toHaveBeenCalled();
});
//fails
it('Should open a modal after a .gallery element is clicked', function() {
$('.gallery').click();
waitsFor(function() {
return ($('body').find('.mfp-ready').length > 0)
}, '.gallery to be clicked', 500);
});
});
}
);