2016-12-23 7 views
0

私はいくつかのURLをリクエストするajax関数をテストしたいと思っています。私はノックをモックhttpを使用しようとしましたが、私はカルマランナーを使用しているため、それは私に "モジュール 'fs'を見つけることができないというエラーをスローします。これは、カルマがブラウザでテストを実行するためです。ジャスミンHTTP要求(フェッチとXMLXtthpRequest用)を模擬する方法

どうすればいいですか?ありがとう(私はjasmine-ajaxを試しましたが、何とかしていません)。

カルマがブラウザで動作するため、問題が発生していると私は理解しています。しかし、私はそれとどのように戦うことができます。

ありがとうございました!

答えて

1

ジャスミンアヤックスが必ず動作します。ここで(カルマの上にジャスミン)コードを作業からのサンプルは次のとおりです。

describe('RequesterTest', function(){ 

    beforeEach(function(){ 
     jasmine.Ajax.install(); // this enables interception 
    }); 

    afterEach(function(){ 
     jasmine.Ajax.uninstall(); // disables interceptions 
    }) 

    it('makes $.ajax', function(){ 
     spyOn($, 'ajax'); 
     $.ajax({url: 'http://example.com'}); 
     expect($.ajax).toHaveBeenCalled(); 
    }); 

    it('assert success callback for ajax', function(){ 
     spyOn($, 'ajax'); 
     var myCallback = function(){}; 
     $.ajax({url: 'http://example.com', success: myCallback}); 
     var actualAjaxOptions = $.ajax.calls.mostRecent().args[0]; 
     expect(actualAjaxOptions).toEqual(jasmine.objectContaining({ 
      success: myCallback, 
     })); 
    }); 
}); 

exapmleは、グローバルに定義されたjQueryとモジュールなし/ AMDの使用を前提としています。

+1

ご回答いただきありがとうございます。しかし、私は説明に間違いをしました。 **標準** xmlhttp **の代わりに** fetch **を使用しています。だから、ジャスミン・アヤックスはうまくいきません。フェッチモックを使用しようとしていますが、動作しません。 – Velidan

+0

申し訳ありませんが 'フェッチ'のポイントを見逃しています。 afairこのメソッドは約束を返します。そのため、あなたはそれを模擬して約束を返すように、何らかのラッパーを作成するかもしれません。 )ちょっとしたことかもしれないが動作する)) – xmike

+0

あなたは絶対に正しいです:私はそれが最良のアイデアだと思っています。だから私たちは別の "複雑な"解決策が出るまでそれを使うべきです。 – Velidan

関連する問題