Я пытаюсь выполнить тестирование тестового (дочернего) контроллера компонента AngularJS 1.5 (с помощью Webpack), для которого требуется родительский компонент и контроллер из другого модуля.Угловой контрольный контроллер 1.5, который требует контроллера родительского компонента
Детский структура управления:
function ChildController() {
var vm = this;
vm.searchText = '';
vm.submit = function() {
var data = {};
data['srch'] = vm.searchText;
vm.parentCtrl.submitTextSearch(data);
};
}
module.exports = ChildController;
Детский компонент:
var template = require('./child.html');
var controller = require('./child.controller');
var childComponent = {
require: {
parentCtrl: '^parent'
},
template: template,
controller: controller,
controllerAs: 'vm'
};
module.exports = childComponent;
Так что я хотел бы сделать это, чтобы дразнить вне parentCtrl, что требуется в подать() в childController в - функции. Я не смог найти, как это сделать на самом деле. Я нашел некоторые аналогичные решения для дочерних и родительских директив и попробовал их, например. вводя родительский контроллер через поддельный HTML-элемент, как описано в this child-parent directive example, и в основном тот же stackoverflow solutions без каких-либо результатов. Мои проблемы различаются, по крайней мере, тем, что дочерний и родительский контроллеры находятся в разных модулях. И я полагаю, что фокус-трюки не так сильно Угловой 1.5-стиль?
скелет моего теста Жасмин без моих неудачных попыток фиктивных:
describe('child component', function() {
describe('child controller', function() {
var controller;
beforeEach(angular.mock.module('child'));
beforeEach(inject(function(_$componentController_) {
controller = _$componentController_('child');
}))
it('should work', function() {
controller.searchText = "test";
controller.submit();
})
})
})
Это приводит к TypeError: Cannot read property 'submitTextSearch' of undefined
. Что именно я должен сделать, чтобы издеваться над родительским контроллером? Имея ограниченный опыт работы в Angular, у меня нет идей.
Я пробовал это, но не работает для меня. Все еще получая «Контроллер» ', требуемый директивой' ', не может быть найден! ". –
Вы уверены, что находитесь в вашей карме? Возможно, некоторые файлы не загружаются. – asoriano