无法在spec文件中找到该功能

时间:2017-09-04 10:10:57

标签: javascript typescript import es6-class angular2-testing

Example.ts

export class Example{

public async initService(Id): Promise<any> {

//promise logic

    }
}

Example.spec.ts

 //imported Example class correctly

    describe('testing', async () =>{
       it('InitService test call', async ()=>{
            let x = await Example.initService(id:any) //this line displays error as initService does not exist on type 'typeof AnnounceService'
    });
});

我已正确导入类示例,但无法在 Example.spec.ts 中调用示例类的功能。

1 个答案:

答案 0 :(得分:0)

这是一个非常简单的错误。 您在类函数本身上调用方法,而不是在类的实例类型的对象上调用。

如果您打算在没有实例的情况下调用该方法,就像您和示例代码一样,那么您需要将其标记为静态:

export class Example {
   static async initService(Id) {}
}

另一方面,如果你实际上意味着它是一个实例方法,你需要创建一个实例来调用该方法:

export class Example {
   async initService(Id) {}
}

 describe('testing', async () => {
    it('InitService test call', async () => {
      const x = await new Example().initService(1);
    });
 });

最后,值得注意的是错误文本id是以它的方式表达的,因为类函数本身的类型被写为typeof ClassFunction,而其实例的类型是写成'ClassFunction