sinon: тестовый пример wirte для анонимной функции - PullRequest
0 голосов
/ 20 января 2020

Require.js file 
import $ from 'jquery';
import _ from 'underscore';
import requestSettings from '../config/requestSettings';

export default function () {
    var args = Array.prototype.slice.call(arguments);

    var mergedOptions = _.extend({}, requestSettings, args[0]);

    if (requestSettings.headers && arguments[0].headers) {
        mergedOptions.headers = _.extend({}, requestSettings.headers, args[0].headers);
    }

    args[0] = mergedOptions;

    return $.ajax.apply($, args);
}

Ds.js 
    cancelExportDashboard: function () {
        var self = this;
        if (self.dashboard.currentExportId) {
            return request({
                url: this.contextPath + "xyz" + self.dashboard.currentExportId,
                method: "DELETE"
            }).done(function () {
                self.dashboard.currentExportId = undefined;
            }).fail(function () {
                self.dashboard.currentExportId = undefined;
            });
        }

        return new $.Deferred().resolve();
    }
    var args = Array.prototype.slice.call(arguments);

    var mergedOptions = _.extend({}, requestSettings, args[0]);

    if (requestSettings.headers && arguments[0].headers) {
        mergedOptions.headers = _.extend({}, requestSettings.headers, args[0].headers);
    }

    args[0] = mergedOptions;

    return $.ajax.apply($, args);
}


file : dashboard.js 
    cancelDashboard: function () {
        var self = this;
        if (self.dashboard.currentExportId) {
            return request({
                url: this.contextPath + "/rest_v2/dashboardExecutions/" + self.dashboard.currentExportId,
                method: "DELETE"
            }).done(function () {
                self.dashboard.currentExportId = undefined;
            }).fail(function () {
                self.dashboard.currentExportId = undefined;
            });
        }

        return new $.Deferred().resolve();
    }

Я пишу тестовый блок для функции cancelDashboard. Запрос является анонимной функцией, записанной в файле запроса. js и импортированной в файл Ds. js. я использовал useFakeXMLHttpRequest для возврата запроса в качестве resol (), но он все еще не находится в состоянии готовности.

Не могли бы вы предложить, как использовать sinon для покрытия состояния готовности для этого запроса вызова.

...