在TypeScript中为Abstract类创建扩展的匿名类

时间:2016-03-28 13:20:20

标签: unit-testing typescript abstract-class

我有abstract类,其实施的protected方法很少,abstract方法很少。 我正在尝试为protected方法编写一些测试。

由于即使在外部世界的扩展类中也没有这些,我想创建anonymous Test class,它可以扩展和验证/模拟我的东西。

export abstract class AbsClass implements AbsInterface {

    protected extract(filter: string) {
    //some implemented code to test
    }

    abstract someMethod();
}

我无法弄清楚如何创建类似anonymously

的内容
export class TestClass extends AbsClass {
   public testExtract(){
        //call super.extract and verify result
   }
}

2 个答案:

答案 0 :(得分:1)

我之前遇到过这种情况。似乎导出/抽象关键字相互干扰。我必须定义类,然后在另一行上导出以解决这个问题。

示例:

abstract class BaseClass {}

export default BaseClass

答案 1 :(得分:0)

this related issue中讨论了一些解决方法。另请参阅:

简短的回答是,现在很难代表匿名类来访问其超类的私有/受保护成员。如果您只是想测试超类的一部分,那么实现类是否真的必须是匿名的?

(顺便说一句:我通常在测试方面还很陌生,但是我已经看到很多关于不显式测试私有/受保护方法的强烈建议。最好测试调用该方法的公共API方法私人/受保护的人?)