我想單元測試需要父組件和另一個模塊的控制器的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;
所以我希望做的是模擬出該公司在childController的提交()所需的parentCtrl - 功能。我一直無法找到如何真正做到這一點。我找到了一些類似的孩子 - 家長指示解決方案並嘗試了這些解決方案如this child-parent directive example中所述通過僞造的HTML元素注入父控制器,並且基本上相同的stackoverflow solutions沒有結果。我的問題至少在兒童和父母控制器處於不同模塊的事實上有所不同。我想範圍技巧並不是那麼多的Angular 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