2015-10-21 4 views
0

Я стараюсь быть хорошим разработчиком & написать несколько тестов, чтобы охватить директиву, которую у меня есть. Директива имеет введенную услугу, в которой выполняется вызов конечной точки webApi.угловая директива с проверкой зависимостей

Когда я запускаю тест (который в минуту ожидает 1 равным 2, поэтому я могу доказать, что тест на самом деле работает !!) Я получаю сообщение об ошибке, что неожиданный запрос GET был сделан в мою реальную конечную точку, хотя я думал, что я высмеял/вычеркнул службу, чтобы тест выполнялся. Мой тест выглядит примерно так:

Я думал, что, позвонив по телефону $provide.service с именем моей службы и затем издеваясь над методом «getUserHoldings», тогда это будет автоматически вводиться во время тестирования, если бы я пропустил трюк здесь? Путь конечной точки - неожиданный запрос содержится в фактическом методе getUserHoldings на конкретной службе.

Спасибо за любую помощь, предложенную как вождение меня в горшок !!!

 describe('directive: spPlanResults', function() { 
      var scope; 
      var directiveBeingTested = '<sp-plan-results></sp-plan-results>'; 
      var element; 

      beforeEach (module('pages.plans')); 

      beforeEach (inject(function ($rootScope, 
            $compile, 
            currencyFormatService, 
            _, 
            moment, 
            plansModel, 
            appConfig, 
            $timeout, 
            $q, 
            $provide) { 
       scope = $rootScope.$new(); 

      $provide.service('plansService', function() { 
       return { 
        getUserHoldings: function() { 
         var deferred = $q.defer(); 
         return deferred.resolve([ 
          { 
           class: 'Class1', 
           classId: 2, 
           award: 'Award1', 
           awardId : 2 
          }]); 
        } 
       }; 
      }); 
      element = $compile(directiveBeingTested)(scope); 
      scope.$digest(); 
    }); 

     it ('should be there', inject(function() { 
      expect(1).equals(2); 
     })); 
}); 
+0

ли директива в templateUrl? Вероятно, он ищет его, и это неожиданный запрос GET, который вы видите. –

+0

У него есть шаблон шаблона да. Хотя ошибка относится к GET для пути, который указан только в службе, метод, который я пытаюсь издеваться, getUserHoldings. – CheGuevarasBeret

+0

Я добавил путь к шаблону html в другом beforeEach, beforeEach (модуль («приложение/страницы/планы/директива/шаблоны/sp-plan-results.html»)); но ошибка по-прежнему относится к пути конечной точки api, который находится в моем методе на конкретной службе. – CheGuevarasBeret

ответ

1

Referencing - http://www.mikeobrien.net/blog/overriding-dependencies-in-angular-tests/ - это будет работать, если вы сделали свою конфигурацию «$ обеспечивает» в контексте «модуля, т.е. сделать что-то вроде -

describe('directive: spPlanResults', function() { 

var scope; 
var directiveBeingTested = '<sp-plan-results></sp-plan-results>'; 
var element; 

beforeEach(module('pages.plans', function($provide) { 
    $provide.value('plansService', function() { 
      return { 
       getUserHoldings: function() { 
        var deferred = $q.defer(); 
        return deferred.resolve([{ 
         class: 'Class1', 
         classId: 2, 
         award: 'Award1', 
         awardId: 2 
        }]); 
       } 
      }; 
    }); 
})); 

beforeEach(inject(function($rootScope, $compile, currencyFormatService, _, moment, plansModel, appConfig, $timeout, $q) { 
    scope = $rootScope.$new(); 
    element = $compile(directiveBeingTested)(scope); 
    scope.$digest(); 
}); 

it('should be there', inject(function() { 
    expect(1).equals(2); 
})); }); 
Смежные вопросы