Протестируйте функцию, определенную в 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();
});
});