我目前正在研究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'.
答案 0 :(得分:1)
这是因为你在一个实例上调用静态方法,你需要在类型上调用它,因为在类型级别访问静态成员。
expect(StringExtensions.firstToLowerCase(argument)).toBe('argumenTas');
beforeEach
和afterEach
内的当前代码也不是必需的。
这个问题对于打字稿是通用的,而不是特定于任何框架。