2017-05-30 138 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