Dot-Net

“Typemock Isolator”如何模擬靜態方法?

  • August 24, 2015

正如你們中的一些人所知道的,在 .net 中模擬靜態方法通常是不可能的。

通過模擬,我的意思是用另一個具有相同簽名的方法替換類中的方法,通常用於測試目的。

用於模擬方法的兩種主要方法是將其聲明為虛擬方法或在介面中定義它。.net 靜態方法都不允許使用這兩種方法。

然而,有一個昂貴的工具叫做“Typemock Isolator”,它允許模擬靜態方法。Isolator 如何完成這個看似不可能的壯舉?

它在常見問題解答中。

基本上,Typemock fake 實例化了一個原始類型的新對象,並掛鉤到該對象的每個方法和屬性呼叫,將呼叫重定向到 fake 並返回您指定的值。它在 .NET Framework(如果您有興趣,可以使用.NET Profiler API)中使用一些深奧的巫術來做到這一點,但這都是“合法的”。從技術上講,任何人都可以建構 Typemock 的副本,但我還沒有看到。

引用自:https://stackoverflow.com/questions/3207028