如何测试控制器中设置的属性。角度js中的$ onInit方法

时间:2016-09-22 07:13:19

标签: javascript angularjs unit-testing

我有一个场景,我在控制器中初始化一些变量。$ onInit方法。如何测试这些属性是否设置正确?

控制器

 ctrl.$onInit = function () {
    ctrl.devices = _.cloneDeep(ctrl.formDevices);
};

单元测试

it('should expose device related properties to view', function () {
        expect(controller.devices).toBeDefined();
};

输出

Unit test output

1 个答案:

答案 0 :(得分:3)

您必须显式调用$ onInit函数。 $ componentController不会调用此函数,因为它是生命周期钩子的一部分,它不会运行。

有一些方法可以将$ onInit称为implicity,可以找到here

检查$ onInit函数是否正确设置属性的最简单方法是调用$ onInit。毕竟你正在测试$ onInit函数是否能完成它的工作,而不是AngularJS是否通过它的生命周期钩子。

it('should expose device related properties to view', function () {
    controller.$onInit();
    expect(controller.devices).toBeDefined();
};