2017-08-26 53 views
1

我想創建自己的斷言類。我嘗試安裝mocha和chai,但是從這些模塊深處獲得了很多很多錯誤,所以目前我寧願嘗試一些自建的東西,如果不是至少要學習更多的TypeScript。構建自己的斷言類

我找到了一個好的模板(https://gist.github.com/brunolm/6031927),並且IsFalse,IsTrue,AreEqual的實現工作得很好。我用一個IsNullOrUndefined擴展它以滿足我的需求,迄今爲止都是很好的。

我也想使用IsInstanceOf測試。它是這樣實現的:

public static IsInstanceOfType(expectedType: Function, actual: any): void { 
    if (!(actual instanceof expectedType)) { 
     // some more code to construct a message, and throw 
    } 
} 

雖然我無法獲得該代碼的工作。我不知道如何/作爲第一個參數傳遞什麼。我嘗試這樣

Assert.IsInstanceOfType((): List<string> => { return undefined; }, list); 

與列表<>是我自己的泛型集合類,以及列表是它(或不...這是找出)的實例。

上面的代碼編譯,但失敗,即使它不應該斷言失敗。我發現「傳遞函數返回你期望的類型」很奇怪,如果可能的話,會更喜歡更好的東西。 如果這是要走的路,那麼我錯誤地使用它 - 你會如何使用它?

我問筆者,他建議我應該這樣調用

Assert.IsInstanceOfType(List<string>, list); 

但是,這並不與編譯器,這不可能是正確的,或者是辦理什麼手續?我無法實現它 - 這是寫出來的類型,不是函數?!?

有什麼建議嗎?

+0

我在此處顯示的功能參數順序與原始鏈接類相比進行了切換。可悲的是,這還不是解決問題的辦法。如何傳遞參數的問題,而不是它們的放置順序... – Ralf

回答

0
​​

然後

const Foo = function() {}; 
Assert.IsInstanceOfType(Foo, new Foo()); // true 

我希望這將指引你走向解決方案。

給我們你的代碼列表對象,如果你需要更多的幫助。