Как я могу проверить эту скрытую функцию обратного вызова? - PullRequest
0 голосов
/ 23 марта 2019

Мне удалось выяснить, как проверить функцию this.toJSON, связавшись с функцией click. Но я немного заблудился в том, как проверить функцию this.download (). (это связано с AmCharts, пользовательский экспорт)

it('should call toJSON on export', function() {
    var exp = chart.export.menu[0].menu[0].menu[0];

    /*
        exp = {
            label: 'JSON',
            click: function() {
                this.toJSON({}, function(data) {
                    this.download(
                        data,
                        'application/json',
                        this.setup.chart.$exportName + '.json'
                    );
                });
            }
        }
    */

    var self = { toJSON: jasmine.createSpy() };
    exp.click.bind(self)();

    expect(exp.label).toEqual('toJSON');
    expect(self.toJSON).toHaveBeenCalled();
});

1 Ответ

0 голосов
/ 25 марта 2019

Через некоторое время, когда я обдумываю все это, мне кажется, это хорошо работает ...

// before each I set everything up
var dlcb = {
    setup: {
        chart: chart
    },
    download: jasmine.createSpy('download')
};

var self = {};
['toCSV', 'toJSON', 'toXLSX'].forEach(function(name) {
    self[name] = jasmine
        .createSpy(name, function(a, cb) {
            cb.bind(dlcb)(true);
        })
        .and.callThrough();
});

// -----

it('should call toJSON on export', function() {
    var exp = chart.export.menu[0].menu[0].menu[0];

    /*
        exp = {
            label: 'JSON',
            click: function() {
                this.toJSON({}, function(data) {
                    this.download(
                        data,
                        'application/json',
                        this.setup.chart.$exportName + '.json'
                    );
                });
            }
        }
    */

    var self = { toJSON: jasmine.createSpy() };
    exp.click.bind(self)();

    expect(exp.label).toEqual('toJSON');
    expect(self.toJSON).toHaveBeenCalled();
    expect(dlcb.download).toHaveBeenCalledWith(true, 'application/json', 'vp-chart-export.json');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...