2017-03-04 6 views
0

ためunittestのを作成し、私はgetModules AngularJs単体テストジャスミン+ KAMRA +角度モックは、これは私のdashboardServiceあるgetModules機能

のためのユニットテストを作成したいです========================================== ================

(function (angular) { 
    'use strict'; 

    var __Name = "dashboardService";  
    var __Path = "components/dashboard";  

    angular 
    .module(window.__env.appName,[]) 
     .factory(__Name, serviceFunc); 

    serviceFunc.$inject = ['$cookies','$http']; 

    function serviceFunc($cookies,$http) {  
     return { 
         getmodules: function (cb) { 
          $http({ 
           method: 'GET', 
           url:'/home/modulesInfo' 

          }).then(function successCallback(response) { 
           cb(true, response); 
          }, function errorCallback(response) { 
           cb(false, response) 
          }); 
         } 

      } 
    } 

})(window.angular); 

=========================== =============================================

以下は私の仕様ですファイル(dashboardService.spec.js)

'use strict'; 
describe('getmodules', function() { 
    beforeEach(function() { module('ngMockE2E'); }); 
    var service, httpBackend, defaultAlertFactory; 
    beforeEach(function() { 
     debugger; 
     module('myApp'); 
     module(function ($provide) { 
      var dashboardService = { 
       getMegetmodules: function() { 
        // mocked method 
        return ['david', 'James', 'Sam']; 
       } 
      }; 

      $provide.service('defaultAlertFactoryA', dashboardService); 
     }); 
     angular.mock.inject(function ($injector) { 
      service = $injector.get('defaultAlertFactoryA'); 
      httpBackend = $injector.get('$httpBackend'); 

     }); 

    }); 

    //describe('getmodules', function() { 
    it("should return a list of getmodules", inject(function() { 
     debugger; 
     httpBackend.expectGET('/Home/modulesInfo').respond(['david', 'James', 'Sam']); 
     service.getmodules(function (result) { 
      expect(result).toEqual(["david", "James", "Sam"]); 
     }); 
     httpBackend.flush(); 
    })) 
    //}) 

});

ありがとうございます!

module(function ($provide) { 
    var dashboardService = { 
     getModules: function() { 
      // mocked method 
      return ['david', 'James', 'Sam']; 
     } 
    }; 

    $provide.service('defaultAlertFactoryA', dashboardService); 
}); 

そして、あなたの中:それはあなたがタイプミスを持っているようだ

+0

エラーメッセージは::::::::: getmodulesはgetmodulesのリストを返します。 エラー:[ng:areq]引数'fn'は関数ではありません。オブジェクト http://errors.angularjs.org/1.6.1/ng/areq?p0=fn&p1=not%20a%20function%2C%20got%20Object エラー:[ng: areq]引数 'fn'が関数ではありません。オブジェクト – user1308116

答えて

0

、あなたのdashboardServiceはgetMegetmodulesという関数を定義している、とあなたのテスト機能であなたがservice.getmodulesに呼んでいる、あなたのような何かを行う必要がありますテスト機能:

it("should return a list of getmodules", inject(function() { 
    debugger; 
    httpBackend.expectGET('/Home/modulesInfo').respond(['david', 'James', 'Sam']); 
    service.getModules(function (result) { 
     expect(result).toEqual(["david", "James", "Sam"]); 
    }); 
    httpBackend.flush(); 
})); 

希望! pd:httpBackend.flush()が必要ないと思います。

+0

が試行されましたが、まだ動作しません。 – user1308116

+0

プランナーを作成できますか? –

関連する問題