2016-09-28 25 views
2

私はフロントエンドを分度器とともにテストするためにジャスミンを実装しています。私はいくつかのサーバー応答を模擬したいと思います。私は現在、ジャスミン・アヤックスの仕事をしようとしています。私はアヤックスの電話を聞いて問題を抱えています。XMLHttpRequestは未定義ですが、角度モックajaxはソースコードからajax呼び出しをリッスンしませんか?

私はこの問題は、模擬アヤックスファイルがXMLHttpRequestオブジェクトにアクセスできないことに起因すると考えています。私はgetJasmineRequireObj()とのXMLHttpRequestを得た

は未定義エラーであるので、私はモックajax.jsソースファイルに直接

global.XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; 

を追加することによってそれを修正しました。

ただし、この修正では私がしようとしていることは解決しません。

テスト仕様の中に、私はAJAX呼び出しを検出することができますから:

作品:

require('../mock-ajax.js'); 
... 
it ('should allow admin to delete user', function() { 

    var xhr = new XMLHttpRequest(); 

    xhr.open("GET", "/users"); 
    xhr.send(); 

    page.deleteButton.click(); 

    expect(jasmine.Ajax.requests.mostRecent()).toBeDefined(true); 
    var request = jasmine.Ajax.requests.mostRecent(); 
    request.respondWith({ 
    "status": 200, 
    "contentType": 'application/json', 
    "responseText": 'hello' 
    }); 

    expect(request.method).toBe('GET'); 
}); 

は動作しません:

require('../mock-ajax.js'); 
... 
it ('should allow admin to delete user', function() { 
    page.deleteButton.click(); 

    expect(jasmine.Ajax.requests.mostRecent()).toBeDefined(true); 
    var request = jasmine.Ajax.requests.mostRecent(); 
    request.respondWith({ 
    "status": 200, 
    "contentType": 'application/json', 
    "responseText": 'hello' 
    }); 

    expect(request.method).toBe('DELETE'); 
}); 

page.deleteButton.click();ブラウザからajax呼び出しを行いますが、この呼び出しはjasmine.Ajax.requests.mostRecent()から検出されません。

jasmineは、テスト仕様の外で行われたajaxコールを検出する方法を教えてください。私は分度器を使用しているので、ジャスミンはブラウザで行われた呼び出しを検出できませんか?また、私はjasmine specRunner.htmlを持っていませんし、私のファイルディレクトリは大きなプロジェクトの一部ですので、ソースファイルを見つけるためのジャスミンファイル構造に合わないかもしれません。しかし、私は分度器を使用しているので、これが問題になるかどうかはわかりません。

答えて

0

jasmine-ajaxプロジェクトがあり、ここで必要なものを提供することを目的としています。

関連する問題