如何调用类的静态方法?

时间:2017-05-30 15:36:49

标签: typescript

我目前正在研究Angular4 Web应用程序,我正在尝试为只有公共静态方法的类和管道编写单元测试。到目前为止,我还没有找到任何解决办法。任何适用于组件,服务等的东西都不适用于此。

示例:类

export class StringExtensions {
    public static firstToLowerCase = ( argument: string ): string => {
        return `${ argument.substr( 0, 1 ).toLowerCase() }${ argument.substr( 1 ) }`;
    }
}

示例:不工作单元测试

import {StringExtensions} from './string-extensions';

describe('StringExtensions', () => {

    let classStringExtensions: StringExtensions;
    const argument: string = 'ArgumenTas';

    beforeEach(() => {
        classStringExtensions = new StringExtensions();
    });

    afterEach(() => {
        classStringExtensions = null;
    });

    it('should ...', () => {
        expect(classStringExtensions.firstToLowerCase(argument)).toBe('argumenTas');
    });

});

的ErrorMessage:

ERROR in .../string-extensions.spec.ts (17,38): 
Property 'firstToLowerCase' does not exist on type 'StringExtensions'.

1 个答案:

答案 0 :(得分:1)

这是因为你在一个实例上调用静态方法,你需要在类型上调用它,因为在类型级别访问静态成员。

expect(StringExtensions.firstToLowerCase(argument)).toBe('argumenTas');

beforeEachafterEach内的当前代码也不是必需的。

这个问题对于打字稿是通用的,而不是特定于任何框架。