2017-05-30 97 views
0

我目前正在研究一个Angular4 Web应用程序,我正在尝试为只有公共静态方法的类和管道编写单元测试。到现在我还没有找到任何解决方案来做到这一点。任何适用于组件,服务等的东西在这里都不起作用。如何调用类的静态方法?

例子:class

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

这是因为你调用静态方法的一个实例,您需要在类型级别访问静态成员时将其称为类型。

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

beforeEachafterEach的内部的当前的代码也是没有必要的。

这个问题是一般打字稿,并不是特定于任何框架。

+0

非常感谢!现在我知道答案,这似乎很明显... –

+0

@JessicaM。 - 乐意效劳。请考虑使用答案左侧的复选标记将其标记为答案。 – Igor