NSubstitute完全手冊(二)建立替代例項

2021-09-22 11:01:04 字數 1731 閱讀 7931

建立乙個替代例項的基本語法:

var substitute = substitute.for();
這就是通常情況下你建立乙個型別的替代例項的方法。一般來說,這個型別是乙個介面,但是在一些特殊情況下,也可以對類進行替代。

警告:類的替代可能會有一些不太好的***。nsubstitute 只能作用於類中的虛擬成員,所以類中的任何非虛成員**將都會被真實的執行。如果你嘗試替代乙個類,而該類會在其建構函式或某個非虛屬性中格式化硬碟,那麼你就是自討苦吃了。如果可能的話,請堅持只替代介面型別。

在知道了我們不會替代類型別之後,此處描述如何為乙個具有含參建構函式的類建立替代例項:

var someclass = substitute.for(5, "

hello world

");

對於具有預設建構函式的類,建立其替代例項的語法與替代介面一樣。

有些時候,你可能需要為多個型別建立替代例項。乙個最好的例子就是,當你有**使用了某型別後,需要檢查是否其實現了 idisposable 介面,並且確認是否呼叫了 dispose 進行型別銷毀。

1

public

inte***ce

icommand : idisposable 25

6public

class

commandrunner714

15public

void

runcommand()

1620}21

22[testmethod]

23public

void

test_creatingsubstitute_multipleinte***ces()

24

通過這種方法,替代例項可以實現多個型別。但請記住,乙個類最多只能實現乙個類。如果你願意的話,你可以指定多個介面,但是其中只能有乙個是類型別。為多個型別建立替代例項的最靈活的方式是使用過載。

1

public

class

someclasswithctorargs : idisposable26

7public

void

dispose() 8}

910[testmethod]

11public

void

test_creatingsubstitute_specifiedoneclasstype()12,

15new

object

16);

17 assert.isinstanceoftype(substitute, typeof

(icommand));

18 assert.isinstanceoftype(substitute, typeof

(idisposable));

19 assert.isinstanceoftype(substitute, typeof

(someclasswithctorargs));

20 }

通過使用 substiute.for() 語法,nsubstitute 可以為委託型別建立替代。當為委託型別建立替代時,將無法使該替代例項實現額外的介面或類。

1

[testmethod]

2public

void

test_creatingsubstitute_fordelegate()

3

NSubstitute完全手冊索引

nsubstitute 是乙個 net mocking 類庫。一直以來,開發者對 mocking 類庫的語法的簡潔性有強烈的渴望,nsubstitute 試圖滿足這一需求。簡單明瞭的語法可以讓我們將重心放在測試本身,而不是糾纏在測試替代例項的建立和配置上。nsubstitute 已嘗試將最常用的操作...

NSubstitute完全手冊索引

nsubstitute 是乙個 net mocking 類庫。一直以來,開發者對 mocking 類庫的語法的簡潔性有強烈的渴望,nsubstitute 試圖滿足這一需求。簡單明瞭的語法可以讓我們將重心放在測試本身,而不是糾纏在測試替代例項的建立和配置上。nsubstitute 已嘗試將最常用的操作...

NSubstitute完全手冊索引

nsubstitute 是乙個 net 單元測試模擬類庫。一直以來,開發者對 mocking 類庫的語法的簡潔性有強烈的需求,nsubstitute 試圖滿足這一需求。簡單明瞭的語法可以讓我們將重心放在測試本身,而不是糾纏在測試替代例項的建立和配置上。nsubstitute 已嘗試將最常用的操作需求...