2016-08-18 11 views
0

AJAXでPOSTを行い、送信されるデータをテストしようとしていますが、「paramString.splitは関数ではありません」というエラーが表示されますそのテストが実行されるとき。私はこれについて他の投稿を探しましたが、FormDataがAJAXで動作するようになっているようですが、問題はありません。データは送信されますが、成功したテストを書くことはできません。jasmine-ajaxのFormDataオブジェクトの解析を停止できません

AJAX:

upload: (file, progressCallback) => { 
    let data = new FormData(); 
    data.append('image', file); 

    return $.ajax({ 
    xhr: function() { 
     let xhr = new window.XMLHttpRequest(); 

     xhr.upload.addEventListener('progress', progressCallback); 
     return xhr; 
    }, 
    method: 'POST', 
    url: apiUrl(), 
    cache: false, 
    processData: false, 
    contentType: false, 
    data: data 
    }); 
} 

試験: https://github.com/jasmine/jasmine-ajax/blob/master/src/paramParser.js#L18:エラーがこの行で発生さ

describe('my test',() => { 

    beforeEach(function() { 
    jasmine.Ajax.install() 
    }); 

    afterEach(function() { 
    jasmine.Ajax.uninstall(); 
    }); 

    it('sends a POST request to the right endpoint with data', function() { 
    const image = { 
     size: 10000, 
     type: 'image/jpeg' 
    }; 

    let data = new FormData(); 
     data.append('image', image); 

    myService.upload(image); // POST happens here 

    const request = jasmine.Ajax.requests.mostRecent(); 

    expect(request.method).toBe('POST');    // passes 
    expect(request.url).toBe('/dashapi/dam-assets/'); // passes 
    expect(request.data()).toEqual(data);    // error 
    }); 

エラー

TypeError: paramString.split is not a function 

。私はブレークポイントをそこに置き、paramStringは実際にその時点でFormDataオブジェクトです。私はjasmine.Ajax.installでリクエストを嘲笑して元のリクエストにあるprocessData: falseを上書きしていると仮定していますが、それを修正する方法がわかりません。

答えて

0

私は

expect(request.params).toEqual(data); 
ようにテストを変更する必要がありました
関連する問題