2016-03-09 4 views
0

Я тестирую внешний компонент, который я нашел в Интернете. Он работал, как ожидалось, в моем коде, но у меня есть проблема с его тестированием.Как выполнить модульное тестирование компонента в угловом?

Мои коды:

Контроллер:

function testCtrl(externalComponent) { 
    //other codes 
    externalComponent.loadFile('test.txt').then(function(res) { 
     console.log(res) 
    }) 

тест Блок

describe.. 
    beforeEach(module('testApp')); 
    beforeEach(inject(function($injector) { 
     externalComponent = $injector.get('externalComponent'); 
     $rootScope = $injector.get('$rootScope'); 
     $httpBackend = $injector.get('$httpBackend');  
    }); 

    describe('my test', function() { 
     beforeEach(function() { 

     }); 

     it('should test external component', function() { 
      //not sure how to test external component. 
      $httpBackend.flush() 
     }); 
    }) 
} 
+0

Вы загрузили модуль ngMock? – Zamboney

+0

Да, я загрузил его – BonJon

+0

gr8, теперь вы можете показать код 'externalComponent'? – Zamboney

ответ

1

код под общий подход тестирования модульного теста базы на код

контроллера код:

function testCtrl(externalComponent,$scope) { 
    //other codes 
    externalComponent.loadFile('test.txt').then(function(res) { 
     $scope.data = res; 
    }) 
} 

тестовый код:

beforeEach(module('testApp')); 
beforeEach(inject(function($injector) { 
    $controller = $injector.get('$controller') 
    externalComponent = $injector.get('externalComponent'); 
    $rootScope = $injector.get('$rootScope'); 
    $httpBackend = $injector.get('$httpBackend');  
}); 

describe('my test', function() { 
    var testCtrl, data = {a:1}, $scope = {}; 
    beforeEach(function() { 
     $httpBackend.when('GET', '/test.txt') 
         .respond(data) 
     testCtrl = $controller('testCtrl', { $scope: $scope }); 
    }); 

    it('should test external component', function() { 
     //not sure how to test external component. 
     $httpBackend.flush() 
     expect($scope.data).toEqual(data); 
    }); 
    }) 
} 

объяснение:

  • httpbackend обработки самого начала test.txt запрос
  • контроллер создан
  • ожидают данных для назначения $ scope.data
+0

Спасибо, но я думаю, что ваши коды по-прежнему не охватывают часть externalComponent.loadFile. +1 – BonJon

+0

снова, если вы хотите закрыть externalComponent.loadFile Мне нужно увидеть код этой функции – Zamboney

Смежные вопросы