2016-05-19 16 views
0

角度サービスで$ httpをテストするのは苦労しています。サービスコードは私のモジュールで動作しますが、正常にテストできないようです。私のサービスの構造を変更する必要がありますか? $ httpBackendは以下のいずれの場合でもヒットしません。

マイサービス:

angular.module('myApp') 

.service('backendApi', [ 
    "$http" 
    function(
    $http 
){ 
    this.getThis = function(getPath) { 
     return $http({method: 'GET', url: getPath}); 
    }; 
    } 
]); 

私のテスト:

describe("backend API", function() { 
    var backendApi; 

    beforeEach(module('myApp')); 

    beforeEach(inject(function (_backendApi_, $httpBackend) { 
    backendApi = _backendApi_; 

    $httpBackend.when('GET', 'http://jsonplaceholder.typicode.com/posts/1').respond({ 
     'mocked': 'data' 
    }); 
    })); 


    it('gets data from API', function() { 

    expect(
     backendApi.getThis('http://jsonplaceholder.typicode.com/posts/1') 
    ).toEqual({ 'mocked': 'data' }); 

    backendApi.getThis('http://jsonplaceholder.typicode.com/posts/1').then(function(data) { 
     expect(data).toEqual('Not getting here..'); 
    }); 

    }); 

}); 

答えて

0

これは簡単に修正されてしまいました。変更を適用するためにバックエンドをフラッシュする必要がありました。

backendApi.getThis('http://jsonplaceholder.typicode.com/posts/1').then(function(response.data) { 
    expect(response.data).toEqual({ 'mocked': 'data' }); 
}); 

httpBackend.flush(); 
関連する問題