1

ファイルのダウンロードを開始する handleDownload メソッドがあります。関数はバックエンドに投稿し、ファイルがあるサーバーに新しい要求が投稿されたことに基づいて、応答を返します。私は、mockjaxを使用してリクエストをモックできることを確認しましたが、成功、エラーなどのさまざまなパスを処理する方法を確認しました。handleDownload 関数をテストするための優れたスタートは何ですか?どのように? モックにはSinon.jsを使用していますが、まだ深く理解していません。また、handleDownloadFinal 関数が呼び出されているかどうかも確認する必要があります。

handleDownload: function(data, url) {
$.ajax({
    type: "POST",
    url: url,
    data: {},
    success: function(response) {
        if (response.success) {
            var start_token = response.token;
            $.ajax({
                type: start_token.method,
                url: start_token.url,
                beforeSend: function(xhr) {
                    xhr.setRequestHeader('Authorization', start_token.header);
                },
                success: function(start_response) {
                    handleDownloadFinal(start_response.status_token);
                },
                error: function(start_response) {
                    $.ajax({
                        type: "POST",
                        url: url + 'proxy/',
                        success: function(fallback_response) {
                            if (fallback_response.success) {
                                handleDownloadFinal(fallback_response.status_token, true, fallback_response.job_uuid);
                            } else {
                                errorDownload(response.error);
                            }
                        },
                        error: function(fallback_response) {
                            // Now this is some real error                                    
                            generalErrorDownload();
                        },
                        dataType: 'json'
                    });
                },
                dataType: 'json',
                xhrFields: {
                    withCredentials: true
                }
            });
        } else {
            errorDownload(response.error);
        }
    },
    error: function(response) {
        generalErrorDownload();
    },
    complete: function() {
    },
    dataType: "json"
});

}
4

1 に答える 1