我正在嘗試的是在Typescript中爲單元測試編寫單元測試,以獲取現有的函數庫,這些函數是使用純JS編寫的。我們所有的頁面邏輯也都是純JS。當給定錯誤類型作爲輸入時,這些函數中的一些會拋出異常。例如:使用Typescript和Jasmine對TypeError進行測試
Collection.pluck([{"a":1},{"a":2}], "a") // Pulls the values out of a list of objects
> [1, 2]
因此,第二個參數應該有一個字符串,您想要獲取值的屬性名稱。在pluck函數中有類型檢查來驗證已經傳入了一個對象數組,如果失敗則拋出一個TypeError。
所以編寫測試驗證的正確類型的對象是通過了我會寫它像普通的JS:
expect(function(){ Collection.pluck([{"a":1},{"a":2}], 0); }).toThrowError(TypeError);
在我的聲明文件
但是我把它定義爲這樣的:
declare namespace Collection {
function pluck(obj: Object, propertyName: string): any;
}
所以,我該怎麼辦WHA我希望沒有任何改變的功能?有沒有什麼我可以在TS中配置忽略此文件僅此?
雖然這將停止TS錯誤,但它會通過測試失敗,因爲我測試它是否顯式爲字符串。此外,我還做了其他類似的測試,其中我正在檢查對象,數組,函數等,我也遇到同樣的問題。 –
將更新回答 –
我想我可以使用'任何'。這很奇怪,因爲它不能反映使用TS時函數的內部工作方式,但不像我們可以開始在應用程序的任何地方使用TS,所以除了我之外,任何人都不會看到定義中的這個「錯誤」。重要的是,編譯的JS保持不變,並繼續拋出TypeError。 –