建立乙個替代例項的基本語法:
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通過使用 substiute.for() 語法,nsubstitute 可以為委託型別建立替代。當為委託型別建立替代時,將無法使該替代例項實現額外的介面或類。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 }
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 已嘗試將最常用的操作需求...