单位测试这个。$ onDestroy in angular> 1.5 / es6

时间:2017-03-20 13:53:23

标签: angularjs unit-testing jasmine

使用angular 1.5 / es6,我有以下代码要测试:

    this.$onDestroy = function () {
        this.$interval.cancel(someIntervalTimer);
    };

我无法找到如何在茉莉花单元测试中触发控制器的破坏,以便测试那里发生的事情。 我试图$ destroy()$ scope和$ rootScope,还有$ broadcast(' $ destroy')等,但这些似乎都没有触发销毁。

1 个答案:

答案 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));