Протестируйте функцию, определенную в application.js и вызванную в jQuery(function($){} с помощью jasmine)

У меня есть приложение Ruby on Rails и в моем файле application.js есть:

jQuery(function($) {
    submitFormForBlacklistsCsvExport();
}

function submitFormForBlacklistsCsvExport(){
  jQuery('#blacklists_csv_export').bind('click', function(){
   exportBlacklists('/whitelists')
  })
}

Я использую jasmine для тестирования javascript в приложении, но я не смог найти, как использовать spy, чтобы проверить, что exportBlacklist вызывается только при нажатии "#blacklists_csv_export".

1 ответ

Решение

Это очень распространенный сценарий. Следите за функцией, запускайте обработчик событий и проверяйте, был ли вызван шпион.

describe("Blacklist exporting", function () {
    it("exports on click", function () {
        spyOn(window, "exportBlacklists");
        $("#blacklists_csv_export").triggerHandler("click");
        expect(window.exportBlacklists).toHaveBeenCalled();
    });
});
Другие вопросы по тегам