监视从组件构造函数调用的方法

时间:2017-10-19 13:16:28

标签: angularjs typescript ionic-framework ecmascript-6 jasmine

我是单元测试的新手,我的项目中有一个组件,在其构造函数中有一个方法被调用

export class myComponent {
constructor(){       
        this.someMethod();
   }

public someMethod(){
 //some code
}

我想测试是否使用此测试套件调用该方法:

it('should call for the someMethod', () => {
    spyOn(component, 'someMethod')   //also tried .and.callThrough();

    expect(component.someMethod).toHaveBeenCalled();;
});

问题是在调试时我可以确保调用该方法,测试将始终失败。

如果有人帮忙的话,我会非常感激。

1 个答案:

答案 0 :(得分:2)

正如this answer中所解释的,使用原型方法的一个好处是它们可以在类实例化之前进行间谍或嘲笑。考虑到这是导出控制器类的TypeScript代码,它是:

$onInit

使构造函数包含初始化逻辑通常是一个坏习惯,特别是因为这会使类更难以测试和扩展。由于AngularJS已经提供了控制器挂钩,因此除非存在与生命周期相关的时序问题,否则最好将所有初始化逻辑移至{ runCommand: { aggregate : "personObject", pipeline : [ {$match : {_id :$P{PersonId}}}, {$project:{_id:1,personObjectName:1,receivedDate:1,}}, {$sort : {receivedDate : -1}} ] } }