2016-07-12 1 views
0

$httpBackendを嘲笑して$httpサービスを使用するメソッドをテストしようとしています。私の方法は、私のアプリケーションで正常に動作しますが、私は動作するようにテストを取得することはできません。私は私のアプリサービスが上で実行しているとき、これは動作します - ここ

describe("authHelper", function() { 
    var webHelper; 
    var url; 
    var $httpBackend; 

    beforeEach(function(){ 
     pingResponse = { 
      principal: null, 
      authenticated: false, 
      servlet:true, 
      timestamp:1468325333070 
     }; 
     angular.mock.module('provisioning'); 

     inject(function ($injector) { 
      webHelper = $injector.get('webHelper'); 
     url = webHelper.buildUrl('/ping'); 
      $httpBackend = $injector.get('$httpBackend'); 
      $httpBackend.whenGET(webHelper.buildUrl('/ping')).respond(200, pingResponse); 
     }); 
    }); 

    it("should pass if setup is correct", inject(function(authHelper) { 
     expect(true).toBe(true); 
    console.log(url); 
     authHelper.isAuthenticated().then(
     function(data){ alert(data); }, 
     function(data){ alert(data); } 
    ); 
    })); 

は私がテストしてい方法である:ここで私はどんな結果を得ることはありません(動作しないテストコードがあり、URLが正しいですサーバーが、モックが動作していない私は正常に動作10回の他のテストを持っていますが、模擬作業を取得するように見えることができない私はURLがコンソールにログインして見るが、それはそれだ:。。

var isAuthenticated = function(){ 
    var d = $q.defer(); 
    $http.get(webHelper.buildUrl('/ping')).then(function(data){ 
    console.log("isauth got"); 
    console.log(data); 

     if(data.data.authenticated){ 
      d.resolve(true); 
     } else { 
      d.resolve(false); 
     } 
    }, function(errorData){ 
    console.log("Error"); 
    console.log(errorData); 
    d.resolve(false); 
}); 

    return d.promise; 
}; 

答えて

1

あなたは」 authHelper.isAuthenticated()を呼び出した後、保留中のリクエストをフラッシュするには、httpBackend.flush();に電話する必要があります。

詳しくは角度のある文書をご覧ください: https://docs.angularjs.org/api/ngMock/service/ $ httpBackend

関連する問題