【问题标题】:Unit test of jQuery datatable's callback method in Angular 6Angular 6中jQuery数据表回调方法的单元测试
【发布时间】:2019-10-10 09:33:09
【问题描述】:

有没有在Angular 6中使用karma/jasmine测试jQuery数据表的回调方法?

我想测试以下方法的页脚回调,但我想不出任何方法。我是单元测试的新手,在网络上找不到任何有用的东西。

 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));
        }
    });
}

一点帮助和指导。

【问题讨论】:

    标签: jquery angular unit-testing datatables karma-jasmine


    【解决方案1】:

    我建议将回调的内容放到一个单独的方法中,因为这个新函数很容易进行单元测试。

    作为第二个测试,我建议通过在新函数上添加 jasmine spy 来测试 initializeBugIndexPageSetting 函数,然后在 footerCallback 中调用它,您可以检查它是否已被调用 (.toHaveBeenCalledTimes(1)调用initializeBugIndexPageSetting函数后的spy)。

    您可以在这里找到有价值的教程:https://scriptverse.academy/tutorials/jasmine-createspy-createspyobj.html

    【讨论】:

    • 正如你所说,但是在新函数中具有回调功能,那么它很容易测试,但是我可以为它编写什么样的单元测试作为“footerCallback”:函数(行, data, start, end, display)' 在数据表中传递,所以我显然无法得到它。你能写一些非常有用的示例测试吗?
    猜你喜欢
    • 2019-03-24
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多