编辑:这个问题适用于Angular 1.5.7。
我正在使用$componentController
测试我的组件,我想测试“&”在模型更改时调用绑定。
const component = {
bindings: {
myModel: '<',
onChange: '&'
}
}
该组件使用模板中的ng-change
来处理任何模型更改:
<select ng-model="vm.myModel"
ng-change="vm.handleMyModel()">
...
</select>
在组件控制器内部,handleMyModel
执行一些操作并最终调用回调。
handleMyModel() {
...doStuff
this.onChange();
}
但是,当我在测试中运行此代码时,handleMyModel
函数永远不会被调用。
const bindings = {
myModel: 'thanks for reading',
onChange: function() {}
};
spyOn(bindings, 'onChange');
const vm = $componentController('myComponent', {}, bindings);
vm.$onInit();
vm.myModel = 'hello world'; // I want this reassignment to trigger handleMyModel();
expect(bindings.onChange).toHaveBeenCalled();
当我通过$componentController
更改模型时,如何触发传入ng-change的函数?
我应该用$ compile直接测试DOM元素吗?然后找到选项并触发“更改”事件? (这种方法似乎比在$ componentController中更改模型更麻烦。)
感谢。