如何测试控制器内的$ scope.method?

时间:2014-08-12 07:04:43

标签: angularjs unit-testing jasmine karma-runner

我尝试过使用Spies,尝试通过调用函数来声明一个变量并且没有任何效果。我是单元测试的新手,我必须误解一些东西

我的单元测试功能

   describe('search treatments method',function(){
  it('search treament should have been called',function(){
      testSearch = new scope.searchTreatments();
      spyOn(testSearch,'searchTreatments');
      expect(testSearch.searchTreatments).toHaveBeenCalled();
});
});

我想测试的方法

  $scope.searchTreatments = function(value){
    return Treatment.find(value).then(function(values){
      return values;
    });
  };

治疗是另一个文件中的工厂

  app.factory('Treatment',['$http','$q',function($http,$q){
function _getTreatment(val) {
  return $http.get('/api/providers_medical_services_services', {
    params: {
      type: 'treatment',
      treatment: val
    }
  }).then(function(response){
    return response.data;
  });
}
return {
  find: _getTreatment
};
}]);

基本上,我只是想在testsearch上创建一个间谍,看它是否被调用。

1 个答案:

答案 0 :(得分:1)

如果我没错,你必须嘲笑工厂。

您必须使用angular-mocks.js来模拟服务或工厂才能在Ka​​rma中进行测试

如果您添加了控制器和服务文件,请检查您的karma.config。

-Thanks