使用angular 1.5 / es6,我有以下代码要测试:
this.$onDestroy = function () {
this.$interval.cancel(someIntervalTimer);
};
我无法找到如何在茉莉花单元测试中触发控制器的破坏,以便测试那里发生的事情。 我试图$ destroy()$ scope和$ rootScope,还有$ broadcast(' $ destroy')等,但这些似乎都没有触发销毁。
答案 0 :(得分:2)
$onDestroy
挂钩由指令/组件编译器以及其他控制器挂钩调用。
当使用$controller
或$componentController
直接测试控制器时,应该手动调用hook方法:
spyOn(controllerInstance.$interval, 'cancel');
expect(controllerInstance.$onDestroy).toBe(jasmine.any(Function));
controllerInstance.$onDestroy();
expect(controllerInstance.$interval.cancel).toBeCalledWith(jasmine.any(Object));