2016-06-07 2 views
3

Я пытаюсь проверить компонент с контроллером, с некоторыми креплениями:Углового 1,5 компонент модульного тестирования с WebPack

class AppSpecificController { 
    constructor() { 
    this.text = this.initialText ? this.initialText : 'No initial text has been specified.'; 
    } 
} 

export const AppSpecificComponent = { 
    bindings: { 
    'initialText': '<bindInitialText' 
    }, 
    templateUrl: '/app/components/app-specific/app-specific.html', 
    controller: AppSpecificController, 
    controllerAs: 'appSpecific' 
}; 

export default AppSpecificComponent; 

В моем блоке тестового файла я не хочу, чтобы загрузить полное приложение, просто вещи, в которых я нуждаюсь. Так я понял, издеваться модуль или просто создайте новый с именем что-то с притворным, добавить компонент этого модуля и загрузить модуль:

import {AppSpecificComponent} from './app-specific.component'; 

describe('AppSpecificComponent',() => { 
    let controller; 
    let scope; 
    let $componentController; 

    beforeEach(() => { 
     angular.module('mock-module', []) 
     .component('appSpecific', AppSpecificComponent); 

     // this fails 
     module('mock-module'); 

     inject((_$componentController_, $rootScope) => { 
     scope = $rootScope.$new(); 
     $componentController = _$componentController_; 
     }); 

     controller = $componentController('appSpecific', {$scope: scope}, {initialText: 'Some text'}); 
    }); 

    it('should test something',() => { 
     expect(true).toBeTruthy(); 
    }); 
}); 

Создание модуля издеваться-модуль отлично, но загрузка он терпит неудачу , и, очевидно, впрыскивание материала из не очень загруженного модуля выходит из строя, а также создание контроллера, на котором я могу начать тестирование. Было бы неплохо проверить компоненты отдельно, отдельно от приложения, в котором оно выполняется.

Только с помощью нового оператора для класса AppSpecificController не работает с тех пор привязок, которые вы получаете от компонента, не существует:

// fails, no bindings available in controller 
controller = new AppSpecificController(); 
+0

Эй, Крис, Вы решили эту проблему? – Ricardas

+1

А, да, я добавлю ответ. –

ответ

2

Я нашел ответ где-то на StackOverflow, не уверен, где больше , Ответ однако я искал:

angular.mock.module($provide => { 
    $provide.controller('SomeController',() => { ... }); 
    $provide.constant('someConstant', 'some constant'); 
}); 

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

  • Нет связанных вопросов^_^