Модульное тестирование метода обратного вызова jQuery datatable в Angular 6 - PullRequest
0 голосов
/ 10 октября 2019

Есть ли способ протестировать метод обратного вызова jQuery datatable в Angular 6 с использованием karma / jasmine?

Я хочу проверить следующий колбэк метода, но не могу найти какой-либо способ сделать это. Я новичок в модульном тестировании и не могу найти ничего полезного в Интернете.

 initializeBugIndexPageSetting() {
    let self = this;
    $('example').DataTable({
        'footerCallback': function (row, data, start, end, display) {
            const api = this.api();
            // Remove the formatting to get integer data for summation
            const intVal = function (i) {
                if (i === 'N/A') {
                    return 0;
                }
                return i * 1;
            };
            // Total over this page
            const pageInProgrssToResolved = api
                .column(14, { page: 'current' })
                .data()
                .reduce(function (a, b) {
                    return intVal(a) + intVal(b);
                }, 0);
            const pageCount = api
                .column(5, { page: 'current' })
                .data().count();
           // Update footer           
            $(api.column(14).footer()).html((pageInProgrssToResolved / pageCount).toFixed(2));
        }
    });
}

Маленькая помощь и руководство.

1 Ответ

1 голос
/ 15 октября 2019

Я бы предложил поместить содержимое обратного вызова в отдельный метод, поскольку эту новую функцию очень легко выполнить модульным тестом.

И в качестве второго теста я бы предложил протестировать функцию initializeBugIndexPageSetting, добавивЖасмин шпионит за новой функцией, которая затем вызывается в footerCallback, и вы можете просто проверить, был ли он вызван (.toHaveBeenCalledTimes (1) в шпионе после вызова функции initializeBugIndexPageSetting).

Вы можете найти ценный учебникздесь: https://scriptverse.academy/tutorials/jasmine-createspy-createspyobj.html

...